https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78229

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P1
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2016-11-07
          Component|rtl-optimization            |target
   Target Milestone|---                         |6.3
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.  Happens after forwprop.

t.i: In function ‘void fn3()’:
t.i:8:10: error: BB 6 can not throw but has an EH edge
     void fn3() {
          ^~~

looks like __builtin_ia32_tzcnt_u32 is not marked NOTHROW but we now fold
that in the backend.  CCing Jakub - this is a recent regression.  Foldings
may not transfer EH info themselves.

Index: gcc/config/i386/i386.c
===================================================================
--- gcc/config/i386/i386.c      (revision 241891)
+++ gcc/config/i386/i386.c      (working copy)
@@ -37664,7 +37664,7 @@ ix86_gimple_fold_builtin (gimple_stmt_it
          gsi_insert_before (gsi, g, GSI_SAME_STMT);
          g = gimple_build_assign (gimple_call_lhs (stmt), NOP_EXPR, lhs);
          gimple_set_location (g, loc);
-         gsi_replace (gsi, g, true);
+         gsi_replace (gsi, g, false);
          return true;
        }
       break;

fixes this.  Otherwise untested.

Reply via email to