From: David Edelsohn Date: Sun, 27 Jun 2004 15:56:34 +0000 (+0000) Subject: rs6000.c (rs6000_legitimate_offset_address_p): Accept TOC addresses. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=60cdabab22144d92f227338dea26bcbc81f93dbc;p=gcc.git rs6000.c (rs6000_legitimate_offset_address_p): Accept TOC addresses. * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p): Accept TOC addresses. From-SVN: r83736 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index edfb656615c..1fe1b439e31 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-06-27 David Edelsohn + + * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p): + Accept TOC addresses. + 2004-06-27 Ulrich Weigand * config/s390/s390-protos.h (s390_load_got): Update prototype. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index ac99a17d1a8..0aa96b99ff6 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -2625,9 +2625,6 @@ toc_relative_expr_p (rtx op) return constant_pool_expr_1 (op, &have_sym, &have_toc) && have_toc; } -/* SPE offset addressing is limited to 5-bits worth of double words. */ -#define SPE_CONST_OFFSET_OK(x) (((x) & ~0xf8) == 0) - bool legitimate_constant_pool_address_p (rtx x) { @@ -2647,6 +2644,9 @@ legitimate_small_data_p (enum machine_mode mode, rtx x) && small_data_operand (x, mode)); } +/* SPE offset addressing is limited to 5-bits worth of double words. */ +#define SPE_CONST_OFFSET_OK(x) (((x) & ~0xf8) == 0) + bool rs6000_legitimate_offset_address_p (enum machine_mode mode, rtx x, int strict) { @@ -2658,6 +2658,8 @@ rs6000_legitimate_offset_address_p (enum machine_mode mode, rtx x, int strict) return false; if (!INT_REG_OK_FOR_BASE_P (XEXP (x, 0), strict)) return false; + if (legitimate_constant_pool_address_p (x)) + return true; if (GET_CODE (XEXP (x, 1)) != CONST_INT) return false;