re PR target/91767 (After r274953, clang-compiled xgcc segfaults during RTL pass...
authorRichard Biener <rguenther@suse.de>
Fri, 20 Sep 2019 06:42:39 +0000 (06:42 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 20 Sep 2019 06:42:39 +0000 (06:42 +0000)
2019-09-20  Richard Biener  <rguenther@suse.de>

PR target/91767
* config/i386/i386-features.c (general_scalar_chain::convert_registers):
Ensure there's a sequence point between allocating the new register
and passing a reference to a reg via regno_reg_rtx.

From-SVN: r275989

gcc/ChangeLog
gcc/config/i386/i386-features.c

index 6f34d1a90c4a25cabfce78d26bc8d7276961b531..31dd2068bfac6f75381ea2dab418eca92b7df383 100644 (file)
@@ -1,3 +1,10 @@
+2019-09-20  Richard Biener  <rguenther@suse.de>
+
+       PR target/91767
+       * config/i386/i386-features.c (general_scalar_chain::convert_registers):
+       Ensure there's a sequence point between allocating the new register
+       and passing a reference to a reg via regno_reg_rtx.
+
 2019-09-20  Martin Jambor  <mjambor@suse.cz>
 
         * coretypes.h (cgraph_edge): Declare.
index f57a5555f8fef400ad92a2edc1dea031090e6ba3..546d78d99b53c927c153d629f70b99565583ac06 100644 (file)
@@ -1210,7 +1210,10 @@ general_scalar_chain::convert_registers ()
   bitmap_iterator bi;
   unsigned id;
   EXECUTE_IF_SET_IN_BITMAP (defs_conv, 0, id, bi)
-    defs_map.put (regno_reg_rtx[id], gen_reg_rtx (smode));
+    {
+      rtx chain_reg = gen_reg_rtx (smode);
+      defs_map.put (regno_reg_rtx[id], chain_reg);
+    }
   EXECUTE_IF_SET_IN_BITMAP (insns_conv, 0, id, bi)
     for (df_ref ref = DF_INSN_UID_DEFS (id); ref; ref = DF_REF_NEXT_LOC (ref))
       if (bitmap_bit_p (defs_conv, DF_REF_REGNO (ref)))