summaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
diff options
context:
space:
mode:
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2013-12-05 19:39:39 +0000
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2013-12-05 19:39:39 +0000
commit58f94f4a0937e15268040c4f3f9070f9a1a1a406 (patch)
tree30b00583b50c51a9399730c4ded2beb237a26a04 /gcc/lra-constraints.c
parent583d5f6b1f6f0b63439649c6a0bc3dd8cdeb67d4 (diff)
downloadgcc-58f94f4a0937e15268040c4f3f9070f9a1a1a406.tar.gz
2013-12-05 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/59317 * lra-constraints.c (in_class_p): Don't ignore insn with constant as a source. 2013-12-05 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/59317 * testsuite/gcc.target/mips/pr59317.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@205718 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lra-constraints.c')
-rw-r--r--gcc/lra-constraints.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index bb5242a962a..106492f9663 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -271,9 +271,11 @@ in_class_p (rtx reg, enum reg_class cl, enum reg_class *new_class)
where other reload pseudos are no longer allocatable. */
|| (INSN_UID (curr_insn) >= new_insn_uid_start
&& curr_insn_set != NULL
- && (OBJECT_P (SET_SRC (curr_insn_set))
+ && ((OBJECT_P (SET_SRC (curr_insn_set))
+ && ! CONSTANT_P (SET_SRC (curr_insn_set)))
|| (GET_CODE (SET_SRC (curr_insn_set)) == SUBREG
- && OBJECT_P (SUBREG_REG (SET_SRC (curr_insn_set)))))))
+ && OBJECT_P (SUBREG_REG (SET_SRC (curr_insn_set)))
+ && ! CONSTANT_P (SUBREG_REG (SET_SRC (curr_insn_set)))))))
/* When we don't know what class will be used finally for reload
pseudos, we use ALL_REGS. */
return ((regno >= new_regno_start && rclass == ALL_REGS)