[Bug middle-end/64353] [5 Regression] ICE: in execute_todo, at passes.c:1986
enkovich.gnu at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Jan 12 15:36:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64353
Ilya Enkovich <enkovich.gnu at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |enkovich.gnu at gmail dot com
--- Comment #5 from Ilya Enkovich <enkovich.gnu at gmail dot com> ---
When we process function C::xx early_ipa_sra pass performs a modification of
C::i in ipa_modify_call_arguments adding a load statements. It marks function
C::i as requiring ssa renaming for vops. Later we start processing of C::i and
get ICE at execute_todo (pass->todo_flags_start) because it expects update ssa
flags for functions requiring such update.
Before r217125 it worked because C::i was not in SSA form at the moment of load
insertion.
To fix it we may either call update_ssa from ipa_modify_call_arguments or add
update into todo_flags_start of fixup_cfg (we run it at the beginning of all
gimple passes lists anyway).
Possible fix (helps for the test, not fully tested):
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index 01f4111..533dcfe 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -4054,6 +4054,8 @@ ipa_modify_call_arguments (struct cgraph_edge *cs, gcall
*stmt,
expr = create_tmp_reg (TREE_TYPE (expr));
gimple_assign_set_lhs (tem, expr);
gsi_insert_before (&gsi, tem, GSI_SAME_STMT);
+ if (gimple_in_ssa_p (cfun))
+ update_ssa (TODO_update_ssa_only_virtuals);
}
}
else
More information about the Gcc-bugs
mailing list