From 63f27eb2c237d89527d018ab01e8f8864e45f925 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 21 Jan 1999 12:34:06 -0800 Subject: [PATCH] rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Recognize and accept transformations that we have performed earlier. * rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Recognize and accept transformations that we have performed earlier. * alpha.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise. From-SVN: r24810 --- gcc/ChangeLog | 6 ++++++ gcc/config/alpha/alpha.h | 12 ++++++++++++ gcc/config/rs6000/rs6000.h | 12 ++++++++++++ 3 files changed, 30 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cbddd6138782..f2947b9a8205 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Thu Jan 21 20:33:31 1999 Richard Henderson + + * rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Recognize and accept + transformations that we have performed earlier. + * alpha.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise. + Sun Jan 17 20:39:20 1999 Richard Henderson * jump.c (rtx_renumbered_equal_p): Special case CODE_LABEL. diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index 4e99683fbbd6..2f69908284fd 100644 --- a/gcc/config/alpha/alpha.h +++ b/gcc/config/alpha/alpha.h @@ -1500,6 +1500,18 @@ extern void alpha_init_expanders (); #define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_LEVELS,WIN) \ do { \ + /* We must recognize output that we have already generated ourselves. */ \ + if (GET_CODE (X) == PLUS \ + && GET_CODE (XEXP (X, 0)) == PLUS \ + && GET_CODE (XEXP (XEXP (X, 0), 0)) == REG \ + && GET_CODE (XEXP (XEXP (X, 0), 1)) == CONST_INT \ + && GET_CODE (XEXP (X, 1)) == CONST_INT) \ + { \ + push_reload (XEXP (X, 0), NULL_RTX, &XEXP (X, 0), NULL_PTR, \ + BASE_REG_CLASS, GET_MODE (X), VOIDmode, 0, 0, \ + OPNUM, TYPE); \ + goto WIN; \ + } \ if (GET_CODE (X) == PLUS \ && GET_CODE (XEXP (X, 0)) == REG \ && REGNO (XEXP (X, 0)) < FIRST_PSEUDO_REGISTER \ diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index a2252da14306..f4d51347017a 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -1960,6 +1960,18 @@ typedef struct rs6000_args #define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_LEVELS,WIN) \ do { \ + /* We must recognize output that we have already generated ourselves. */ \ + if (GET_CODE (X) == PLUS \ + && GET_CODE (XEXP (X, 0)) == PLUS \ + && GET_CODE (XEXP (XEXP (X, 0), 0)) == REG \ + && GET_CODE (XEXP (XEXP (X, 0), 1)) == CONST_INT \ + && GET_CODE (XEXP (X, 1)) == CONST_INT) \ + { \ + push_reload (XEXP (X, 0), NULL_RTX, &XEXP (X, 0), NULL_PTR, \ + BASE_REG_CLASS, GET_MODE (X), VOIDmode, 0, 0, \ + OPNUM, TYPE); \ + goto WIN; \ + } \ if (GET_CODE (X) == PLUS \ && GET_CODE (XEXP (X, 0)) == REG \ && REGNO (XEXP (X, 0)) < FIRST_PSEUDO_REGISTER \ -- 2.47.2