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
bar(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 } } } */
56