(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
pr110228.c
       1  /* { dg-do run { target x86_64-*-* i?86-*-* } } */
       2  /* { dg-require-effective-target lp64 } */
       3  
       4  unsigned a[4] = {1,1,1,1};
       5  unsigned tt1 = 0;
       6  
       7  __attribute__((noipa))
       8  static void bug(unsigned * p, unsigned *t, int n, int t2)
       9  {
      10    for(int i = 0; i < n; i++)
      11      {
      12        _Bool LookupFlags ;
      13        unsigned v = t[i];
      14        unsigned tt = tt1;
      15        if (v == 0)
      16  	LookupFlags = 0;
      17        else if (v == 1)
      18  	LookupFlags = 1;
      19        if (LookupFlags) {
      20  	  tt|=3u;
      21  	  LookupFlags = 0;
      22        }
      23        asm("movq $-1, %q1":"+a"(LookupFlags));
      24        *p = tt;
      25      }
      26  }
      27  
      28  int main()
      29  {
      30    unsigned r = 42;
      31    bug(&r,a, sizeof(a)/sizeof(a[0]), 1);
      32    __builtin_printf("%u\n", r);
      33    if (r != 3) __builtin_abort();
      34  }