aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2019-09-04 20:25:05 +0200
committerUros Bizjak <uros@gcc.gnu.org>2019-09-04 20:25:05 +0200
commit0c7800b29bd48cc0f7685f3c0da2db6fd87ef52c (patch)
treedd361dcbefce273bdf9f0827056f21c678875f2d
parent68e2c1996ec6bde27363ce0db15233ac8cae1c4d (diff)
downloadgcc-0c7800b29bd48cc0f7685f3c0da2db6fd87ef52c.zip
gcc-0c7800b29bd48cc0f7685f3c0da2db6fd87ef52c.tar.gz
gcc-0c7800b29bd48cc0f7685f3c0da2db6fd87ef52c.tar.bz2
re PR target/32413 (internal compiler error: in reload_cse_simplify_operands, at postreload.c:396)
PR target/32413 * config/i386/i386.c (inline_secondary_memory_needed): Return true for QI and HImode moves between SSE and general registers. From-SVN: r275377
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c1
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fc18766..be92d37 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-04 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/32413
+ * config/i386/i386.c (inline_secondary_memory_needed): Return true
+ for QI and HImode moves between SSE and general registers.
+
2019-09-04 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
PR c/78736
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 1c9c719..50571a0 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -18328,6 +18328,7 @@ inline_secondary_memory_needed (machine_mode mode, reg_class_t class1,
/* Between SSE and general, we have moves no larger than word size. */
if (!(INTEGER_CLASS_P (class1) || INTEGER_CLASS_P (class2))
+ || GET_MODE_SIZE (mode) < GET_MODE_SIZE (SImode)
|| GET_MODE_SIZE (mode) > UNITS_PER_WORD)
return true;