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");
  • [Bug ipa/111245] [12/13/14/15 R... rguenth at gcc dot gnu.org via Gcc-bugs

Reply via email to