| /* PR tree-optimization/94800 */ |
| /* { dg-do compile { target { ilp32 || lp64 } } } */ |
| /* { dg-options "-O2 -fdump-tree-optimized" } */ |
| /* { dg-final { scan-tree-dump-times " \* 72340172838076673" 2 "optimized" } } */ |
| /* { dg-final { scan-tree-dump-times " \* 16843009" 2 "optimized" } } */ |
| /* { dg-final { scan-tree-dump-times " \* 289360691352306692" 2 "optimized" } } */ |
| /* { dg-final { scan-tree-dump-times " \* 1229782938247303441" 2 "optimized" } } */ |
| /* { dg-final { scan-tree-dump-not "<<" "optimized" } } */ |
| |
| unsigned long long int |
| foo (unsigned long long int x) |
| { |
| unsigned long long int a = x + (x << 8); |
| unsigned long long int b = a + (a << 16); |
| unsigned long long int c = b + (b << 32); |
| return c; |
| } |
| |
| unsigned int |
| bar (unsigned int x) |
| { |
| unsigned int a = x + (x << 8); |
| unsigned int b = a + (a << 16); |
| return b; |
| } |
| |
| unsigned long long int |
| baz (unsigned long long int x) |
| { |
| unsigned long long int a = (x << 2) + (x << 10); |
| unsigned long long int b = a + (a << 16); |
| unsigned long long int c = b + (b << 32); |
| return c; |
| } |
| |
| unsigned long long int |
| qux (unsigned long long int x) |
| { |
| unsigned long long int a = x + (x << 4); |
| unsigned long long int b = a + (a << 8); |
| unsigned long long int c = b + (b << 16); |
| unsigned long long int d = c + (c << 32); |
| return d; |
| } |
| |
| long long int |
| quux (long long int x) |
| { |
| long long int a = x + (x << 8); |
| long long int b = a + (a << 16); |
| long long int c = b + (b << 32); |
| return c; |
| } |
| |
| int |
| corge (int x) |
| { |
| int a = x + (x << 8); |
| int b = a + (a << 16); |
| return b; |
| } |
| |
| long long int |
| garply (long long int x) |
| { |
| long long int a = (x << 2) + (x << 10); |
| long long int b = a + (a << 16); |
| long long int c = b + (b << 32); |
| return c; |
| } |
| |
| long long int |
| waldo (long long int x) |
| { |
| long long int a = x + (x << 4); |
| long long int b = a + (a << 8); |
| long long int c = b + (b << 16); |
| long long int d = c + (c << 32); |
| return d; |
| } |