From f22376c716a73cfb82b58c5f3c5889ba20fdbfc7 Mon Sep 17 00:00:00 2001 From: Christian Iseli Date: Fri, 17 Oct 1997 17:46:57 +0200 Subject: [PATCH] regclass.c (record_address_regs): Look at REG_OK_FOR_{BASE,INDEX}_P for hard regs to determine base and index... * regclass.c (record_address_regs): Look at REG_OK_FOR_{BASE,INDEX}_P for hard regs to determine base and index registers. From-SVN: r15954 --- gcc/ChangeLog | 3 +++ gcc/regclass.c | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3b2cc6bd3e0..8d6ca261aee 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ Fri Oct 17 12:29:48 1997 Christian Iseli + * regclass.c (record_address_regs): Look at REG_OK_FOR_{BASE,INDEX}_P + for hard regs to determine base and index registers. + * reload.c (debug_reload_to_stream): New function. Specify stream into which to write debug info. (debug_reload): Modify to call debug_reload_to_stream with stderr. diff --git a/gcc/regclass.c b/gcc/regclass.c index 2932db13810..45ee16ee202 100644 --- a/gcc/regclass.c +++ b/gcc/regclass.c @@ -1539,6 +1539,32 @@ record_address_regs (x, class, scale) else if (code1 == SYMBOL_REF || code1 == CONST || code1 == LABEL_REF) record_address_regs (arg0, INDEX_REG_CLASS, scale); + /* Look for the sum of two registers where the first is definitely + a base register or the second is definitely an index register. */ + + else if (code0 == REG && code1 == REG + && ((REGNO (arg0) < FIRST_PSEUDO_REGISTER + && REG_OK_FOR_BASE_P (arg0)) + || ((REGNO (arg1) < FIRST_PSEUDO_REGISTER + && REG_OK_FOR_INDEX_P (arg1))))) + { + record_address_regs (arg0, BASE_REG_CLASS, scale); + record_address_regs (arg1, INDEX_REG_CLASS, scale); + } + + /* Look for the sum of two registers where the first is definitely + an index register or the second is definitely a base register. */ + + else if (code0 == REG && code1 == REG + && ((REGNO (arg1) < FIRST_PSEUDO_REGISTER + && REG_OK_FOR_BASE_P (arg1)) + || ((REGNO (arg0) < FIRST_PSEUDO_REGISTER + && REG_OK_FOR_INDEX_P (arg0))))) + { + record_address_regs (arg0, INDEX_REG_CLASS, scale); + record_address_regs (arg1, BASE_REG_CLASS, scale); + } + /* If this the sum of two registers where the first is known to be a pointer, it must be a base register with the second an index. */