diff options
author | vmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-12-05 19:39:39 +0000 |
---|---|---|
committer | vmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-12-05 19:39:39 +0000 |
commit | 58f94f4a0937e15268040c4f3f9070f9a1a1a406 (patch) | |
tree | 30b00583b50c51a9399730c4ded2beb237a26a04 /gcc/lra-constraints.c | |
parent | 583d5f6b1f6f0b63439649c6a0bc3dd8cdeb67d4 (diff) | |
download | gcc-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.c | 6 |
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) |