aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2007-11-23 15:38:29 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2007-11-23 15:38:29 +0000
commitf89935ed1786b2bc9e4d3fba30387343a4c4f312 (patch)
tree524b6fbfc522c5fc6aa1cb518903cbbafd118a73 /gcc
parent27fa4044f10f2a28e3e33b8b126462276f8fdc4f (diff)
downloadgcc-f89935ed1786b2bc9e4d3fba30387343a4c4f312.zip
gcc-f89935ed1786b2bc9e4d3fba30387343a4c4f312.tar.gz
gcc-f89935ed1786b2bc9e4d3fba30387343a4c4f312.tar.bz2
reload.c (find_reloads_address_1): Call REG_OK_FOR_CONTEXT with the autoincdec code, not outer_code.
* reload.c (find_reloads_address_1) <autoincdec cases>: Call REG_OK_FOR_CONTEXT with the autoincdec code, not outer_code. From-SVN: r130380
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/reload.c8
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 687c8b6..730dec3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-11-23 Hans-Peter Nilsson <hp@axis.com>
+
+ * reload.c (find_reloads_address_1) <autoincdec cases>:
+ Call REG_OK_FOR_CONTEXT with the autoincdec code, not
+ outer_code.
+
2007-11-23 Richard Guenther <rguenther@suse.de>
Michael Matz <matz@suse.de>
diff --git a/gcc/reload.c b/gcc/reload.c
index fd791b2..e80ae12 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -5676,8 +5676,10 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context,
}
}
- /* If we have a hard register that is ok as an index,
- don't make a reload. If an autoincrement of a nice register
+ /* If we have a hard register that is ok in this incdec context,
+ don't make a reload. If the register isn't nice enough for
+ autoincdec, we can reload it. But, if an autoincrement of a
+ register that we here verified as playing nice, still outside
isn't "valid", it must be that no autoincrement is "valid".
If that is true and something made an autoincrement anyway,
this must be a special context where one is allowed.
@@ -5690,7 +5692,7 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context,
if (reg_renumber[regno] >= 0)
regno = reg_renumber[regno];
if (regno >= FIRST_PSEUDO_REGISTER
- || !REG_OK_FOR_CONTEXT (context, regno, mode, outer_code,
+ || !REG_OK_FOR_CONTEXT (context, regno, mode, code,
index_code))
{
int reloadnum;