(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
pr100778.c
       1  /* { dg-do run { target *-*-*gnu* } } */
       2  /* { dg-additional-options "-fno-tree-sink -fno-math-errno -ftree-vectorize -D_GNU_SOURCE" } */
       3  /* { dg-require-effective-target fenv_exceptions } */
       4  
       5  #include <fenv.h>
       6  
       7  double a[2];
       8  void __attribute__((noipa)) foo ()
       9  {
      10    double x = a[0];
      11    double y = a[1];
      12    double norm = __builtin_sqrt (x*x + y*y);
      13    if (norm > 1.)
      14      {
      15        x = x / norm;
      16        y = y / norm;
      17      }
      18    a[0] = x;
      19    a[1] = y;
      20  }
      21  
      22  int main()
      23  {
      24    feenableexcept (FE_INVALID);
      25    a[0] = 0.;
      26    a[1] = 0.;
      27    foo ();
      28    if (a[0] != 0. || a[1] != 0.)
      29      __builtin_abort ();
      30    return 0;
      31  }