diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2010-07-09 21:40:48 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2010-07-09 21:40:48 +0000 |
commit | c033690d7e2108d2b7ddbb37d488a6f1519eedff (patch) | |
tree | 0f4ba6c4f6978df7d77d7f9b7c320a76b3712099 /gcc/reload.c | |
parent | e8edaf9523c61dfbdeac886069badf12ff981973 (diff) | |
download | gcc-c033690d7e2108d2b7ddbb37d488a6f1519eedff.zip gcc-c033690d7e2108d2b7ddbb37d488a6f1519eedff.tar.gz gcc-c033690d7e2108d2b7ddbb37d488a6f1519eedff.tar.bz2 |
reload.c (find_reloads): Don't clear badop if we have a winreg alternative...
* reload.c (find_reloads): Don't clear badop if we have a
winreg alternative, but not win, and the class only has fixed
regs.
* hard-reg-set.h (class_only_fixed_regs): Declare.
* reginfo.c (class_only_fixed_regs): New array.
(init_reg_sets_1): Initialize it.
* config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn): Don't
discourage alternatives using the stack pointer.
testsuite/
* gcc.dg/pr32370.c: Allow another kind of error message.
From-SVN: r162019
Diffstat (limited to 'gcc/reload.c')
-rw-r--r-- | gcc/reload.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index 8a3d295..6301f9a 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -3470,7 +3470,8 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, /* If this operand could be handled with a reg, and some reg is allowed, then this operand can be handled. */ - if (winreg && this_alternative[i] != NO_REGS) + if (winreg && this_alternative[i] != NO_REGS + && (win || !class_only_fixed_regs[this_alternative[i]])) badop = 0; /* Record which operands fit this alternative. */ |