1  /* PR rtl-optimization/70467 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -mno-sse" } */
       4  
       5  void foo (unsigned long long *);
       6  
       7  void
       8  bar (void)
       9  {
      10    unsigned long long a;
      11    foo (&a);
      12    a &= 0x7fffffffffffffffULL;
      13    foo (&a);
      14    a &= 0xffffffff7fffffffULL;
      15    foo (&a);
      16    a &= 0x7fffffff00000000ULL;
      17    foo (&a);
      18    a &= 0x000000007fffffffULL;
      19    foo (&a);
      20    a &= 0x00000000ffffffffULL;
      21    foo (&a);
      22    a &= 0xffffffff00000000ULL;
      23    foo (&a);
      24    a |= 0x7fffffffffffffffULL;
      25    foo (&a);
      26    a |= 0xffffffff7fffffffULL;
      27    foo (&a);
      28    a |= 0x7fffffff00000000ULL;
      29    foo (&a);
      30    a |= 0x000000007fffffffULL;
      31    foo (&a);
      32    a |= 0x00000000ffffffffULL;
      33    foo (&a);
      34    a |= 0xffffffff00000000ULL;
      35    foo (&a);
      36    a ^= 0x7fffffffffffffffULL;
      37    foo (&a);
      38    a ^= 0xffffffff7fffffffULL;
      39    foo (&a);
      40    a ^= 0x7fffffff00000000ULL;
      41    foo (&a);
      42    a ^= 0x000000007fffffffULL;
      43    foo (&a);
      44    a ^= 0x00000000ffffffffULL;
      45    foo (&a);
      46    a ^= 0xffffffff00000000ULL;
      47    foo (&a);
      48  }
      49  
      50  /* { dg-final { scan-assembler-not "andl\[ \t\]*.-1," { target ia32 } } } */
      51  /* { dg-final { scan-assembler-not "andl\[ \t\]*.0," { target ia32 } } } */
      52  /* { dg-final { scan-assembler-not "orl\[ \t\]*.-1," { target ia32 } } } */
      53  /* { dg-final { scan-assembler-not "orl\[ \t\]*.0," { target ia32 } } } */
      54  /* { dg-final { scan-assembler-not "xorl\[ \t\]*.-1," { target ia32 } } } */
      55  /* { dg-final { scan-assembler-not "xorl\[ \t\]*.0," { target ia32 } } } */