[Bug tree-optimization/34016] [4.3 Regression] ICE in execute_todo with -ftree-loop-linear for 454.calculix
jakub at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Tue Nov 27 12:32:00 GMT 2007
------- Comment #2 from jakub at gcc dot gnu dot org 2007-11-27 12:31 -------
Testcase in C:
/* PR tree-optimization/34016 */
/* { dg-do compile } */
/* { dg-options "-O2 -ftree-loop-linear" } */
extern void bar (double *);
void foo (void)
{
double gr[36];
int i, j;
for (i = 0; i <= 5; i++)
{
for (j = 0; j <= 5; j++)
gr[i + j * 6] = 0.0;
if (i <= 2)
gr[i + i * 6] = 1.0;
}
bar (gr);
}
As perfect_nestify will call mark_syms_for_renaming, I believe the right fix is
to update todo flags of this pass either using:
--- tree-ssa-loop.c.jj6 2007-09-17 22:25:50.000000000 +0200
+++ tree-ssa-loop.c 2007-11-27 13:18:41.000000000 +0100
@@ -272,6 +272,7 @@ struct tree_opt_pass pass_linear_transfo
0, /* properties_destroyed */
0, /* todo_flags_start */
TODO_dump_func | TODO_verify_loops
+ | TODO_update_ssa_only_virtuals
| TODO_ggc_collect, /* todo_flags_finish */
0 /* letter */
};
or by returning TODO_update_ssa_only_virtuals from tree_linear_transform if
there wasn't already a perfect nest. As update_ssa is a nop if
!need_ssa_update_p, I believe just adding | TODO_update_ssa_only_virtuals
to pass_linear_transform.todo_flags_finish is better. Will test.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34016
More information about the Gcc-bugs
mailing list