(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
tree-ssa/
ssa-pre-31.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fdump-tree-pre -fno-ipa-sra" } */
       3  
       4  typedef struct {
       5      unsigned int key;
       6  } S;
       7  typedef struct s1  {
       8      unsigned int key;
       9      unsigned int bits;
      10      struct s1 *left, *right;
      11  }S1;
      12  extern S a[1024];
      13  static inline int bar( S* p, S1* n )
      14  {
      15    S1 *curr;
      16    S1 *next;
      17  
      18    if ( n->left == n )
      19      return (int)(p->key == n->key);
      20  
      21    curr = n;
      22    next = n->left;
      23  
      24    while (curr->bits > next->bits ) {
      25        curr = next;
      26        if (p->key & (1 << curr->bits))
      27  	next = curr->right;
      28        else
      29  	next = curr->left;
      30    }
      31  
      32    return (int)(p->key == next->key);
      33  
      34  }
      35  
      36  int foo (S1 *root, int N)
      37  {
      38    volatile int r;
      39    int i,j;
      40    for (i=0; i<N; i++)
      41      for (j=0;j<1024; j++)
      42        r = bar(&a[j], root);
      43    return 0;
      44  } 
      45  
      46  /* { dg-final { scan-tree-dump-times "key" 3 "pre" } } */