aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-08-16 13:17:04 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-08-16 13:17:04 +0000
commit772a1b15d57f0c035188f85cf42641b217eef9eb (patch)
tree17d614212d989f201b899112a7e1bd1c0aca48f1 /gcc/config
parent4305b26e1d83b8065f978839252328bca24007e0 (diff)
downloadgcc-772a1b15d57f0c035188f85cf42641b217eef9eb.zip
gcc-772a1b15d57f0c035188f85cf42641b217eef9eb.tar.gz
gcc-772a1b15d57f0c035188f85cf42641b217eef9eb.tar.bz2
re PR target/91469 (ICE in extract_insn, at recog.c:2310 since r274481)
2019-08-16 Richard Biener <rguenther@suse.de> PR target/91469 * config/i386/i386-features.c (general_scalar_chain::replace_with_subreg): Stop at memory operands. * gcc.target/i386/pr91469-1.c: New testcase. * gcc.target/i386/pr91469-2.c: Likewise. From-SVN: r274570
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/i386/i386-features.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/config/i386/i386-features.c b/gcc/config/i386/i386-features.c
index cead207..c4a3d30 100644
--- a/gcc/config/i386/i386-features.c
+++ b/gcc/config/i386/i386-features.c
@@ -613,6 +613,10 @@ general_scalar_chain::replace_with_subreg (rtx x, rtx reg, rtx new_reg)
if (x == reg)
return gen_rtx_SUBREG (vmode, new_reg, 0);
+ /* But not in memory addresses. */
+ if (MEM_P (x))
+ return x;
+
const char *fmt = GET_RTX_FORMAT (GET_CODE (x));
int i, j;
for (i = GET_RTX_LENGTH (GET_CODE (x)) - 1; i >= 0; i--)