| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-optimized" } */ |
| /* LLVM LOCAL test not applicable */ |
| /* { dg-require-fdump "" } */ |
| |
| typedef struct { unsigned short a; } A; |
| |
| extern void abort (void); |
| extern void exit (int); |
| |
| void foo (unsigned int x) |
| { |
| if (x != 0x800 && x != 0x810) |
| abort (); |
| } |
| |
| int |
| main (int argc, char **argv) |
| { |
| int i; |
| for (i = 0; i < 2; ++i) |
| foo (((A) { ((!(i >> 4) ? 8 : 64 + (i >> 4)) << 8) + (i << 4) } ).a); |
| exit (0); |
| } |
| /* { dg-final { scan-tree-dump-times "Invalid sum" 0 "optimized"} } */ |
| /* { dg-final { cleanup-tree-dump "optimized" } } */ |