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