diff options
author | Richard Biener <rguenther@suse.de> | 2019-08-21 08:44:59 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-08-21 08:44:59 +0000 |
commit | 8ef64ab95417d6787b9bd2777ac282932b09a530 (patch) | |
tree | 3f72b607b2a5ec9eb765bab0ddaeb06ca7815553 /gcc | |
parent | 5eb349352b984be67d56a0e54cbd3ceace04083b (diff) | |
download | gcc-8ef64ab95417d6787b9bd2777ac282932b09a530.zip gcc-8ef64ab95417d6787b9bd2777ac282932b09a530.tar.gz gcc-8ef64ab95417d6787b9bd2777ac282932b09a530.tar.bz2 |
re PR target/91498 (STV change in r274481 causes 300.twolf regression on Haswell)
2019-08-21 Richard Biener <rguenther@suse.de>
PR target/91498
PR target/91503
* config/i386/i386-features.c
(general_scalar_chain::make_vector_copies): Copy stack temporary
rtx when using it multiple times.
(general_scalar_chain::convert_reg): Likewise.
From-SVN: r274792
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/i386/i386-features.c | 4 |
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7f0686b..c17d0e1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2019-08-21 Richard Biener <rguenther@suse.de> + + PR target/91498 + PR target/91503 + * config/i386/i386-features.c + (general_scalar_chain::make_vector_copies): Copy stack temporary + rtx when using it multiple times. + (general_scalar_chain::convert_reg): Likewise. + 2019-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de> * function.c (assign_parm_find_stack_rtl): Use known_eq instead of ==. diff --git a/gcc/config/i386/i386-features.c b/gcc/config/i386/i386-features.c index c27ea16..fb7ac1b 100644 --- a/gcc/config/i386/i386-features.c +++ b/gcc/config/i386/i386-features.c @@ -706,7 +706,7 @@ general_scalar_chain::make_vector_copies (unsigned regno) gen_rtx_SUBREG (SImode, reg, 4)); } else - emit_move_insn (tmp, reg); + emit_move_insn (copy_rtx (tmp), reg); emit_insn (gen_rtx_SET (gen_rtx_SUBREG (vmode, vreg, 0), gen_gpr_to_xmm_move_src (vmode, tmp))); } @@ -810,7 +810,7 @@ general_scalar_chain::convert_reg (unsigned regno) adjust_address (tmp, SImode, 4)); } else - emit_move_insn (scopy, tmp); + emit_move_insn (scopy, copy_rtx (tmp)); } else if (!TARGET_64BIT && smode == DImode) { |