diff options
author | Richard Biener <rguenther@suse.de> | 2019-09-20 06:42:39 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-09-20 06:42:39 +0000 |
commit | d865ed7227a98bc1229d6e42bca35f605d6f4f75 (patch) | |
tree | 48674026cf3a88fb23f4ffde01b582059b373260 /gcc | |
parent | c3ff46a5185b69d3022edb28d3f7e6dfe9f1c351 (diff) | |
download | gcc-d865ed7227a98bc1229d6e42bca35f605d6f4f75.zip gcc-d865ed7227a98bc1229d6e42bca35f605d6f4f75.tar.gz gcc-d865ed7227a98bc1229d6e42bca35f605d6f4f75.tar.bz2 |
re PR target/91767 (After r274953, clang-compiled xgcc segfaults during RTL pass: stv)
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386-features.c | 5 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f34d1a..31dd206 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/config/i386/i386-features.c b/gcc/config/i386/i386-features.c index f57a555..546d78d 100644 --- a/gcc/config/i386/i386-features.c +++ b/gcc/config/i386/i386-features.c @@ -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))) |