aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog39
-rw-r--r--gcc/config/arm/arm.c66
2 files changed, 66 insertions, 39 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8fae82c..08e75f5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2003-12-11 Zack Weinberg <zack@codesourcery.com>
+
+ * arm.c (ARM_ADDRESS_COST, THUMB_ADDRESS_COST): Convert macros
+ to inline functions: arm_arm_address_cost, arm_thumb_address_cost
+ respectively.
+ (arm_address_cost): Use 'em.
+
2003-12-12 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* config/alpha/osf.h (TARGET_OS_CPP_BUILTINS): Define
@@ -99,7 +106,7 @@
PR c/13134
* c-decl.c (duplicate_decls): Copy visibility flag when appropriate.
-
+
2003-12-09 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
* config/m32r/m32r.h: Add support for m32r2 processor. Including
@@ -132,7 +139,7 @@
2003-12-08 Stuart Hastings <stuart@apple.com>
* config/i386/i386.md: Typo in split of fp-valued if_then_else.
-
+
2003-12-08 James E Wilson <wilson@specifixinc.com>
PR target/13132
@@ -197,7 +204,7 @@
2003-12-08 Arnaud Charlet <charlet@act-europe.fr>
PR ada/13324, PR ada/12614
- * doc/install.texi: Update requirements for building Ada.
+ * doc/install.texi: Update requirements for building Ada.
2003-12-07 David Edelsohn <edelsohn@gnu.org>
Graham Reed <greed@pobox.com>
@@ -256,7 +263,7 @@
2003-12-06 Andrew Pinski <pinskia@physics.uc.edu>
- * config/rs6000/rs6000.c (macho_branch_islands): Use
+ * config/rs6000/rs6000.c (macho_branch_islands): Use
HOST_WIDE_INT_PRINT_UNSIGNED.
2003-12-06 Richard Sandiford <rsandifo@redhat.com>
@@ -329,7 +336,7 @@
* config/rs6000/rs6000.md: Correct macro test of TARGET_MACHO.
2003-12-05 Stuart Menefy <stuart.menefy@st.com>
- J"orn Rennecke <joern.rennecke@superh.com>
+ J"orn Rennecke <joern.rennecke@superh.com>
PR target/13302
* sh.c (sh_build_builtin_va_list): Use (*lang_hooks.types.make_type).
@@ -376,7 +383,7 @@
2003-12-05 Peter Gerwinski <peter@gerwinski.de>
- * tree.def (PLACEHOLDER_EXPR): Clarify commentary.
+ * tree.def (PLACEHOLDER_EXPR): Clarify commentary.
2003-12-05 Steven Bosscher <stevenb@suse.de>
@@ -419,14 +426,14 @@
2003-12-04 Stuart Hastings <stuart@apple.com>
- * rs6000.c (output_call, macho_branch_islands,
- add_compiler_branch_island, no_previous_def, get_previous_label)
- Revisions of xx_stub functions for branch islands,
- add -fPIC support for Darwin.
- * rs6000-protos.h (output_call) Prototype.
- * rs6000.md Use output_call.
- * invoke.texi Explain Darwin semantics of -longcall.
- * testsuite/gcc.dg/darwin-abi-1.c Revise testcase for -longcall/jbsr.
+ * rs6000.c (output_call, macho_branch_islands,
+ add_compiler_branch_island, no_previous_def, get_previous_label)
+ Revisions of xx_stub functions for branch islands,
+ add -fPIC support for Darwin.
+ * rs6000-protos.h (output_call) Prototype.
+ * rs6000.md Use output_call.
+ * invoke.texi Explain Darwin semantics of -longcall.
+ * testsuite/gcc.dg/darwin-abi-1.c Revise testcase for -longcall/jbsr.
2003-12-04 Richard Henderson <rth@redhat.com>
@@ -533,8 +540,8 @@
2003-12-03 Eric Christopher <echristo@redhat.com>
* c-parse.in (c_in_iteration_stmt, c_in_case_stmt): Move
- from here...
- * c-tree.h: to here.
+ from here...
+ * c-tree.h: to here.
2003-12-03 Jan Hubicka <jh@suse.cz>
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index cadbe65..3d99144 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -3535,32 +3535,52 @@ arm_rtx_costs (rtx x, int code, int outer_code, int *total)
the same for practically all of them. So we weight the different types
of address here in the order (most pref first):
PRE/POST_INC/DEC, SHIFT or NON-INT sum, INT sum, REG, MEM or LABEL. */
+static inline int
+arm_arm_address_cost (rtx x)
+{
+ enum rtx_code c = GET_CODE (x);
+
+ if (c == PRE_INC || c == PRE_DEC || c == POST_INC || c == POST_DEC)
+ return 0;
+ if (c == MEM || c == LABEL_REF || c == SYMBOL_REF)
+ return 10;
+
+ if (c == PLUS || c == MINUS)
+ {
+ char cl0 = GET_RTX_CLASS (GET_CODE (XEXP (x, 0)));
+ char cl1 = GET_RTX_CLASS (GET_CODE (XEXP (x, 1)));
+
+ if (GET_CODE (XEXP (x, 0)) == CONST_INT)
+ return 2;
+
+ if (cl0 == '2' || cl0 == 'c' || cl1 == '2' || cl1 == 'c')
+ return 3;
+
+ return 4;
+ }
+
+ return 6;
+}
+
+static inline int
+arm_thumb_address_cost (rtx x)
+{
+ enum rtx_code c = GET_CODE (x);
+
+ if (c == REG)
+ return 1;
+ if (c == PLUS
+ && GET_CODE (XEXP (x, 0)) == REG
+ && GET_CODE (XEXP (x, 1)) == CONST_INT)
+ return 1;
+
+ return 2;
+}
+
static int
arm_address_cost (rtx x)
{
-#define ARM_ADDRESS_COST(X) \
- (10 - ((GET_CODE (X) == MEM || GET_CODE (X) == LABEL_REF \
- || GET_CODE (X) == SYMBOL_REF) \
- ? 0 \
- : ((GET_CODE (X) == PRE_INC || GET_CODE (X) == PRE_DEC \
- || GET_CODE (X) == POST_INC || GET_CODE (X) == POST_DEC) \
- ? 10 \
- : (((GET_CODE (X) == PLUS || GET_CODE (X) == MINUS) \
- ? 6 + (GET_CODE (XEXP (X, 1)) == CONST_INT ? 2 \
- : ((GET_RTX_CLASS (GET_CODE (XEXP (X, 0))) == '2' \
- || GET_RTX_CLASS (GET_CODE (XEXP (X, 0))) == 'c' \
- || GET_RTX_CLASS (GET_CODE (XEXP (X, 1))) == '2' \
- || GET_RTX_CLASS (GET_CODE (XEXP (X, 1))) == 'c') \
- ? 1 : 0)) \
- : 4)))))
-
-#define THUMB_ADDRESS_COST(X) \
- ((GET_CODE (X) == REG \
- || (GET_CODE (X) == PLUS && GET_CODE (XEXP (X, 0)) == REG \
- && GET_CODE (XEXP (X, 1)) == CONST_INT)) \
- ? 1 : 2)
-
- return (TARGET_ARM ? ARM_ADDRESS_COST (x) : THUMB_ADDRESS_COST (x));
+ return TARGET_ARM ? arm_arm_address_cost (x) : arm_thumb_address_cost (x);
}
static int