summaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2018-02-16 18:17:09 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2018-02-16 18:17:09 +0000
commit16ba97b9eb8b1db41b9aa1fdaae764653698cf26 (patch)
treeaab26e3a1041c2cd8abc6151c1d44047bb4b00de /gcc/lra-constraints.c
parent71a21b9eacacd3875408f38971177e7ecc960386 (diff)
downloadgcc-16ba97b9eb8b1db41b9aa1fdaae764653698cf26.tar.gz
re PR rtl-optimization/70023 (ICE: in assign_by_spills, at lra-assigns.c:1417/8 with -fschedule-insns)
2018-02-16 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/70023 * lra-constraints.c (inherit_in_ebb): Take hard reg mode of src_regno into account. 2018-02-16 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/70023 * gcc.target/i386/pr70023.c: New. From-SVN: r257751
Diffstat (limited to 'gcc/lra-constraints.c')
-rw-r--r--gcc/lra-constraints.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index 9d22da232f4..d730f36fba0 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -6346,7 +6346,13 @@ inherit_in_ebb (rtx_insn *head, rtx_insn *tail)
PSEUDO_REGNO_MODE (src_regno),
reg_renumber[src_regno]);
}
- add_next_usage_insn (src_regno, use_insn, reloads_num);
+ if (src_regno >= FIRST_PSEUDO_REGISTER)
+ add_next_usage_insn (src_regno, use_insn, reloads_num);
+ else
+ {
+ for (i = 0; i < hard_regno_nregs (src_regno, reg->biggest_mode); i++)
+ add_next_usage_insn (src_regno + i, use_insn, reloads_num);
+ }
}
}
/* Process used call regs. */