| /* PR tree-optimization/93118 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-optimized" } */ |
| /* { dg-final { scan-tree-dump-not ">>" "optimized" } } */ |
| /* { dg-final { scan-tree-dump-not "<<" "optimized" } } */ |
| |
| #if __SIZEOF_LONG_LONG__ == 8 && __SIZEOF_INT__ == 4 && __CHAR_BIT__ == 8 |
| unsigned long long |
| foo (unsigned long long a) |
| { |
| unsigned long long b = a >> 32; |
| int c = b; |
| unsigned long long d = c; |
| return d << 32; |
| } |
| |
| unsigned long long |
| bar (unsigned long long a) |
| { |
| unsigned long long b = a >> 32; |
| unsigned c = b; |
| unsigned long long d = c; |
| return d << 32; |
| } |
| |
| unsigned long long |
| baz (long long a) |
| { |
| long long b = a >> 32; |
| unsigned long long c = b; |
| return c << 32; |
| } |
| |
| typedef unsigned V __attribute__((vector_size (2 * sizeof (int)))); |
| typedef int W __attribute__((vector_size (2 * sizeof (int)))); |
| |
| void |
| quux (W *w, V *v) |
| { |
| W a = (W) (*v >> 16); |
| *w = a << 16; |
| } |
| #else |
| int i; |
| #endif |