From eef7b18cb7a0b63ff4d260aafcf9f9a3481c5add Mon Sep 17 00:00:00 2001 From: Vladimir Makarov Date: Fri, 28 Nov 2014 19:33:35 +0000 Subject: re PR target/64061 (ICE: in gen_rtx_SUBREG, at emit-rtl.c:894 with -O2 -g -fno-dce -fno-tree-dce) 2014-11-28 Vladimir Makarov PR target/64061 * lra.c (lra_substitute_pseudo): Ignore constant with int mode for subreg. 2014-11-28 Vladimir Makarov PR target/64061 * gcc.target/i386/pr64061.c: New. From-SVN: r218171 --- gcc/lra.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gcc/lra.c') diff --git a/gcc/lra.c b/gcc/lra.c index ec122c7..6535063 100644 --- a/gcc/lra.c +++ b/gcc/lra.c @@ -1806,7 +1806,8 @@ lra_substitute_pseudo (rtx *loc, int old_regno, rtx new_reg) machine_mode mode = GET_MODE (*loc); machine_mode inner_mode = GET_MODE (new_reg); - if (mode != inner_mode) + if (mode != inner_mode + && ! (CONST_INT_P (new_reg) && SCALAR_INT_MODE_P (mode))) { if (GET_MODE_SIZE (mode) >= GET_MODE_SIZE (inner_mode) || ! SCALAR_INT_MODE_P (inner_mode)) -- cgit v1.1