http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56448
Bug #: 56448
Summary: cc1 hangs on volatile array with -O or above
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: [email protected]
ReportedBy: [email protected]
The following snippet (reduced from a larger test case) causes top-of-trunk cc1
to hang (infinite loop) on x86_64-linux using -O or above. This is a
regression from 4.7.2 which does not have this issue.
$ cat volatile.c
volatile int a[1];
int b;
void fn1 ()
{
for (;;)
{
int *c[3][6] =
{ 0, 0, 0, &b, 0, 0, 0, 0, &b, 0, 0, 0, 0, 0, 0, 0, &b, (int *)&a[0] };
b = *c[2][5];
}
}
$ gcc-trunk --version
gcc-trunk (GCC) 4.8.0 20130225 (experimental) [trunk revision 196255]
$ gcc-4.7 -O -c volatile.c
$ gcc-trunk -c volatile.c
$ gcc-trunk -O -c volatile.c
<hangs>