New: ICE in check_loop_closed_ssa_use, at tree-ssa-loop-manip.c:398
7 answers - 777 bytes -

// test case, compile with
int foo1 (void);
void foo2 (int);
static int foo9 (int k)
{
return ((k == 0x00) || (k == 0x10) || (k == 0x14));
}
static int foo8 (int *p)
{
return *p;
}
void foo6 (int *p)
{
int a, b, c, d, e = 0;
foo8 (p);
b = 0;
do
{
b++;
a = foo1();
}
while (b < 3 && (!foo9 (a)));
repeat:
d = 3;
do
{
c = foo1 ();
if (c)
foo1 ();
d--;
}
while (c && d);
if (c && !e)
{
foo2 (c);
return;
}
if (!e)
{
e = 1;
goto repeat;
}
}
// compiler output:
sd.i: In function 'foo6':
sd.i:15: internal compiler error: in check_loop_closed_ssa_use, at
tree-ssa-loop-manip.c:398
No.1 | | 470 bytes |
| 
Additional Comments From belyshev at depni dot sinp dot msu dot ru 2005-09-11 10:39
// another testcase, compile with
int b;
void foo1 (int);
void foo (void)
{
int i, j, k, l;
short v;
for (i = 0; i < 10; i ++)
{
for (l = 0; l < 10; l++)
{
asm volatile ("\n" : "=a" (v));
j = v;
if (j)
{
k = 1;
goto out;
}
}
if (b)
foo1 (j);
k = 0;
out:
if (!k)
return;
}
}
No.2 | | 100 bytes |
| 
Additional Comments From pinskia at gcc dot gnu dot org 2005-09-11 14:31
Confirmed a regression.
No.3 | | 110 bytes |
| 
Additional Comments From pinskia at gcc dot gnu dot org 2005-09-11 15:23
This is after complete unrolling.
No.4 | | 402 bytes |
| 
Additional Comments From rakdver at gcc dot gnu dot org 2005-09-11 15:35
Smaller testcase:
int b;
void foo1 (int);
void foo (void)
{
int i, j, k, l;
short v;
for (i = 0; i < 10; i ++)
{
for (l = 0; l < 10; l++)
{
asm volatile ("\n" : "=a" (v));
j = v;
if (j)
goto out;
}
if (b)
foo1 (j);
return;
out: ;
}
}
No.5 | | 83 bytes |
| 
Additional Comments From rakdver at gcc dot gnu dot org 2005-09-12 09:32
Patch.
No.6 | | 381 bytes |
| 
Additional Comments From cvs-commit at gcc dot gnu dot org 2005-09-13 07:33
Subject: Bug 23817
CVSRT:/cvs/gcc
Module name:gcc
Changes by:rakdver (AT) gcc (DOT) gnu.org2005-09-13 07:33:50
Modified files:
gcc : ChangeLog tree-cfg.c
Log message:
PR tree-optimize/23817
* tree-cfg.c (tree_merge_blocks): Preserve loop closed ssa.
Patches:
No.7 | | 83 bytes |
| 
Additional Comments From pinskia at gcc dot gnu dot org 2005-09-13 13:46
Fixed.