| // PR c++/4401 | |
| // This testcase was miscompiled on 64-bit platforms, resulting to | |
| // operating on a[0x100000000] instead of a[0]. | |
| // { dg-do run } | |
| // { dg-options "-O2" } | |
| char *a; | |
| char b[] = "AAAA"; | |
| extern "C" void abort (void); | |
| extern "C" void exit (int); | |
| void foo (void) | |
| { | |
| unsigned int i, j; | |
| i = 2; | |
| j = 3; | |
| a[i + 1 - j] += i; | |
| } | |
| int main (void) | |
| { | |
| a = b; | |
| foo (); | |
| if (b[0] != 'A' + 2) | |
| abort (); | |
| exit (0); | |
| } |