From 582be0a107e90be99658ff9d7b85b17430cbc864 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Tue, 8 Apr 2008 09:04:04 +0000 Subject: [PATCH] cris.c (cris_address_cost): For a PLUS, swap tem1 and tem2 if tem1 is not a REG or MULT. * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1 and tem2 if tem1 is not a REG or MULT. From-SVN: r134088 --- gcc/ChangeLog | 5 +++++ gcc/config/cris/cris.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 076abb30357..af448939d3e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-04-08 Hans-Peter Nilsson + + * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1 + and tem2 if tem1 is not a REG or MULT. + 2008-04-08 Jan Hubicka * function.h (incomming_args): Break out of struct function. diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c index 85a944b9e95..87fef5a2f90 100644 --- a/gcc/config/cris/cris.c +++ b/gcc/config/cris/cris.c @@ -1883,7 +1883,12 @@ cris_address_cost (rtx x) rtx tem1 = XEXP (x, 0); rtx tem2 = XEXP (x, 1); - /* We'll "assume" canonical RTX. */ + /* Local extended canonicalization rule: the first operand must + be REG, unless it's an operation (MULT). */ + if (!REG_P (tem1) && GET_CODE (tem1) != MULT) + tem1 = tem2, tem2 = XEXP (x, 0); + + /* We'll "assume" we have canonical RTX now. */ gcc_assert (REG_P (tem1) || GET_CODE (tem1) == MULT); /* A BIAP is 2 extra bytes for the prefix insn, nothing more. We -- 2.30.2