aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-09-19 17:05:51 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-09-19 17:05:51 +0000
commit54dc857754b64ae1e56191d983ae2c4434d96fb2 (patch)
tree35823081a07f31df4851456c40a3ef01fa416a3d /gcc
parent40858b9dfb72960bff5978b1441d0f2d21ae55ba (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/i386/i386-features.c5
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)));