| /* PR tree-optimization/88775 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-optimized" } */ |
| /* These can't be decided until we know how the variables will |
| be laid out in memory. */ |
| /* { dg-final { scan-tree-dump-not "return 1;" "optimized" } } */ |
| |
| int a[64] = {}; |
| int b[64] = {}; |
| int e[0] = {}; |
| int f[0] = {}; |
| |
| int |
| f1 (void) |
| { |
| return (__UINTPTR_TYPE__) &a[0] != (__UINTPTR_TYPE__) &b[64]; |
| } |
| |
| int |
| f2 (void) |
| { |
| return (__UINTPTR_TYPE__) &a[64] != (__UINTPTR_TYPE__) &b[0]; |
| } |
| |
| int |
| f3 (void) |
| { |
| return (__UINTPTR_TYPE__) &e[0] != (__UINTPTR_TYPE__) &f[0]; |
| } |
| |
| int |
| f4 (void) |
| { |
| int c[64] = {}, d[64] = {}; |
| return (__UINTPTR_TYPE__) &c[0] != (__UINTPTR_TYPE__) &d[64]; |
| } |
| |
| int |
| f5 (void) |
| { |
| int c[64] = {}, d[64] = {}; |
| return (__UINTPTR_TYPE__) &c[64] != (__UINTPTR_TYPE__) &d[0]; |
| } |
| |
| /* { dg-prune-output "-Wreturn-local-addr" } */ |