From f89935ed1786b2bc9e4d3fba30387343a4c4f312 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Fri, 23 Nov 2007 15:38:29 +0000 Subject: [PATCH] reload.c (find_reloads_address_1): Call REG_OK_FOR_CONTEXT with the autoincdec code, not outer_code. * reload.c (find_reloads_address_1) : Call REG_OK_FOR_CONTEXT with the autoincdec code, not outer_code. From-SVN: r130380 --- gcc/ChangeLog | 6 ++++++ gcc/reload.c | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 687c8b63dec..730dec33329 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-11-23 Hans-Peter Nilsson + + * reload.c (find_reloads_address_1) : + Call REG_OK_FOR_CONTEXT with the autoincdec code, not + outer_code. + 2007-11-23 Richard Guenther Michael Matz diff --git a/gcc/reload.c b/gcc/reload.c index fd791b2d57f..e80ae122a77 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; -- 2.30.2