diff options
author | Richard Biener <rguenther@suse.de> | 2019-09-19 17:05:51 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-09-19 17:05:51 +0000 |
commit | 54dc857754b64ae1e56191d983ae2c4434d96fb2 (patch) | |
tree | 35823081a07f31df4851456c40a3ef01fa416a3d /gcc | |
parent | 40858b9dfb72960bff5978b1441d0f2d21ae55ba (diff) | |
download | gcc-54dc857754b64ae1e56191d983ae2c4434d96fb2.zip gcc-54dc857754b64ae1e56191d983ae2c4434d96fb2.tar.gz gcc-54dc857754b64ae1e56191d983ae2c4434d96fb2.tar.bz2 |
re PR target/91814 (ICE in elimination_costs_in_insn, at reload1.c:3549 since r274926)
2019-09-19 Richard Biener <rguenther@suse.de>
PR target/91814
* config/i386/i386-features.c (gen_gpr_to_xmm_move_src):
Force operand to a register if it isn't nonimmediate_operand.
From-SVN: r275971
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386-features.c | 5 |
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3be2b55..9010eae 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-09-19 Richard Biener <rguenther@suse.de> + + PR target/91814 + * config/i386/i386-features.c (gen_gpr_to_xmm_move_src): + Force operand to a register if it isn't nonimmediate_operand. + 2019-09-19 Wilco Dijkstra <wdijkstr@arm.com> * config/arm/arm.md (<logical_op>di3): Use <optab> and <CODE>. diff --git a/gcc/config/i386/i386-features.c b/gcc/config/i386/i386-features.c index 454eeae..f57a555 100644 --- a/gcc/config/i386/i386-features.c +++ b/gcc/config/i386/i386-features.c @@ -668,10 +668,13 @@ scalar_chain::emit_conversion_insns (rtx insns, rtx_insn *after) static rtx gen_gpr_to_xmm_move_src (enum machine_mode vmode, rtx gpr) { + if (!nonimmediate_operand (gpr, GET_MODE_INNER (vmode))) + gpr = force_reg (GET_MODE_INNER (vmode), gpr); switch (GET_MODE_NUNITS (vmode)) { case 1: - return gen_rtx_SUBREG (vmode, gpr, 0); + /* We are not using this case currently. */ + gcc_unreachable (); case 2: return gen_rtx_VEC_CONCAT (vmode, gpr, CONST0_RTX (GET_MODE_INNER (vmode))); |