From: Zack Weinberg Date: Fri, 12 Dec 2003 02:23:03 +0000 (+0000) Subject: arm.c (ARM_ADDRESS_COST, [...]): Convert macros to inline functions... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d2b6eb76fa7c35f512f8f8dd16b027a525550460;p=platform%2Fupstream%2Fgcc.git arm.c (ARM_ADDRESS_COST, [...]): Convert macros to inline functions... * 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. From-SVN: r74560 --- 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 + + * 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 * 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 * config/m32r/m32r.h: Add support for m32r2 processor. Including @@ -132,7 +139,7 @@ 2003-12-08 Stuart Hastings * config/i386/i386.md: Typo in split of fp-valued if_then_else. - + 2003-12-08 James E Wilson PR target/13132 @@ -197,7 +204,7 @@ 2003-12-08 Arnaud Charlet 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 Graham Reed @@ -256,7 +263,7 @@ 2003-12-06 Andrew Pinski - * 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 @@ -329,7 +336,7 @@ * config/rs6000/rs6000.md: Correct macro test of TARGET_MACHO. 2003-12-05 Stuart Menefy - J"orn Rennecke + J"orn Rennecke 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 - * tree.def (PLACEHOLDER_EXPR): Clarify commentary. + * tree.def (PLACEHOLDER_EXPR): Clarify commentary. 2003-12-05 Steven Bosscher @@ -419,14 +426,14 @@ 2003-12-04 Stuart Hastings - * 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 @@ -533,8 +540,8 @@ 2003-12-03 Eric Christopher * 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 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