https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111245
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- Yes - modref: kills: Parm 0 param offset:0 offset:0 size:32 max_size:32 from <bb 2> [local count: 1073741824]: *x_4(D) = always_throws (); not realizing the assignment might not take place. I think there is a simple bug in modref_access_analysis::analyze_store, testing fix. diff --git a/gcc/ipa-modref.cc b/gcc/ipa-modref.cc index f1d88abf3cf..d3e510195b5 100644 --- a/gcc/ipa-modref.cc +++ b/gcc/ipa-modref.cc @@ -1753,8 +1753,7 @@ modref_access_analysis::analyze_store (gimple *stmt, tree, tree op, void *data) t->record_access_lto (t->m_summary_lto->stores, &r, a); if (t->m_always_executed && a.useful_for_kill_p () - && (!cfun->can_throw_non_call_exceptions - || !stmt_could_throw_p (cfun, stmt))) + && !stmt_could_throw_p (cfun, stmt)) { if (dump_file) fprintf (dump_file, " - Recording kill\n");