modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20030613-1.c (about)

     1  /* PR optimization/10955 */
     2  /* Originator: <heinrich.brand@fujitsu-siemens.com> */
     3  
     4  /* This used to fail on SPARC32 at -O3 because the loop unroller
     5     wrongly thought it could eliminate a pseudo in a loop, while
     6     the pseudo was used outside the loop.  */
     7  
     8  extern void abort(void);
     9  
    10  #define COMPLEX struct CS
    11  
    12  COMPLEX {
    13    long x;
    14    long y;
    15  };
    16  
    17  
    18  static COMPLEX CCID (COMPLEX x)
    19  {
    20    COMPLEX a;
    21  
    22    a.x = x.x;
    23    a.y = x.y;
    24  
    25    return a;
    26  }
    27  
    28  
    29  static COMPLEX CPOW (COMPLEX x, int y)
    30  {
    31    COMPLEX a;
    32    a = x;
    33  
    34    while (--y > 0)
    35      a=CCID(a);
    36  
    37    return a;
    38  }
    39  
    40  
    41  static int c5p (COMPLEX x)
    42  {
    43    COMPLEX a,b;
    44    a = CPOW (x, 2);
    45    b = CCID( CPOW(a,2) );
    46      
    47    return (b.x == b.y); 
    48  }
    49  
    50  
    51  int main (void)
    52  {
    53    COMPLEX  x;  
    54  
    55    x.x = -7;
    56    x.y = -7;
    57  
    58    if (!c5p(x))
    59      abort();
    60  
    61    return 0;
    62  }