add default for NO_FUNCTION_CSE
authorTrevor Saunders <tbsaunde+gcc@tbsaunde.org>
Tue, 28 Apr 2015 04:40:00 +0000 (04:40 +0000)
committerTrevor Saunders <tbsaunde@gcc.gnu.org>
Tue, 28 Apr 2015 04:40:00 +0000 (04:40 +0000)
gcc/ChangeLog:

2015-04-27  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* calls.c (prepare_call_address): Remove ifdef NO_FUNCTION_CSE.
* cse.c (fold_rtx): Likewise.
* config/alpha/alpha.h (NO_FUNCTION_CSE): Define to 1.
* config/arc/arc.h (NO_FUNCTION_CSE): Likewise.
* config/avr/avr.h (NO_FUNCTION_CSE): Likewise.
* config/cr16/cr16.h (NO_FUNCTION_CSE): Likewise.
* config/epiphany/epiphany.h (NO_FUNCTION_CSE): Likewise.
* config/frv/frv.h (NO_FUNCTION_CSE): Likewise.
* config/h8300/h8300.h (NO_FUNCTION_CSE): Likewise.
* config/i386/i386.h (NO_FUNCTION_CSE): Likewise.
* config/ia64/ia64.h (NO_FUNCTION_CSE): Likewise.
* config/lm32/lm32.h (enum reg_class) (NO_FUNCTION_CSE):
* Likewise.
* config/m32r/m32r.h (NO_FUNCTION_CSE): Likewise.
* config/mep/mep.h (NO_FUNCTION_CSE): Likewise.
* config/mn10300/mn10300.h (NO_FUNCTION_CSE): Likewise.
* config/nds32/nds32.h (NO_FUNCTION_CSE): Likewise.
* config/nios2/nios2.h (NO_FUNCTION_CSE): Likewise.
* config/pa/pa.h (NO_FUNCTION_CSE): Likewise.
* config/rs6000/rs6000.h (NO_FUNCTION_CSE): Likewise.
* config/s390/s390.h (NO_FUNCTION_CSE): Likewise.
* config/sparc/sparc.h (NO_FUNCTION_CSE): Likewise.
* config/spu/spu.h (NO_FUNCTION_CSE): Likewise.
* config/stormy16/stormy16.h (NO_FUNCTION_CSE): Likewise.
* config/v850/v850.h (NO_FUNCTION_CSE): Likewise.
* defaults.h (NO_FUNCTION_CSE): Provide default definition to 0.
* doc/tm.texi: Regenerate.
* doc/tm.texi.in: Document NO_FUNCTION_CSE is always defined to
either true or false.

From-SVN: r222501

28 files changed:
gcc/ChangeLog
gcc/calls.c
gcc/config/alpha/alpha.h
gcc/config/arc/arc.h
gcc/config/avr/avr.h
gcc/config/cr16/cr16.h
gcc/config/epiphany/epiphany.h
gcc/config/frv/frv.h
gcc/config/h8300/h8300.h
gcc/config/i386/i386.h
gcc/config/ia64/ia64.h
gcc/config/lm32/lm32.h
gcc/config/m32r/m32r.h
gcc/config/mep/mep.h
gcc/config/mn10300/mn10300.h
gcc/config/nds32/nds32.h
gcc/config/nios2/nios2.h
gcc/config/pa/pa.h
gcc/config/rs6000/rs6000.h
gcc/config/s390/s390.h
gcc/config/sparc/sparc.h
gcc/config/spu/spu.h
gcc/config/stormy16/stormy16.h
gcc/config/v850/v850.h
gcc/cse.c
gcc/defaults.h
gcc/doc/tm.texi
gcc/doc/tm.texi.in

index 1a82f17a97fb7a567a45cb6d94d34671daeafa28..301a63b5c54cd4e5b547bd3f7367cb9c54a04fbe 100644 (file)
@@ -1,3 +1,35 @@
+2015-04-27  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+
+       * calls.c (prepare_call_address): Remove ifdef NO_FUNCTION_CSE.
+       * cse.c (fold_rtx): Likewise.
+       * config/alpha/alpha.h (NO_FUNCTION_CSE): Define to 1.
+       * config/arc/arc.h (NO_FUNCTION_CSE): Likewise.
+       * config/avr/avr.h (NO_FUNCTION_CSE): Likewise.
+       * config/cr16/cr16.h (NO_FUNCTION_CSE): Likewise.
+       * config/epiphany/epiphany.h (NO_FUNCTION_CSE): Likewise.
+       * config/frv/frv.h (NO_FUNCTION_CSE): Likewise.
+       * config/h8300/h8300.h (NO_FUNCTION_CSE): Likewise.
+       * config/i386/i386.h (NO_FUNCTION_CSE): Likewise.
+       * config/ia64/ia64.h (NO_FUNCTION_CSE): Likewise.
+       * config/lm32/lm32.h (enum reg_class) (NO_FUNCTION_CSE):
+       * Likewise.
+       * config/m32r/m32r.h (NO_FUNCTION_CSE): Likewise.
+       * config/mep/mep.h (NO_FUNCTION_CSE): Likewise.
+       * config/mn10300/mn10300.h (NO_FUNCTION_CSE): Likewise.
+       * config/nds32/nds32.h (NO_FUNCTION_CSE): Likewise.
+       * config/nios2/nios2.h (NO_FUNCTION_CSE): Likewise.
+       * config/pa/pa.h (NO_FUNCTION_CSE): Likewise.
+       * config/rs6000/rs6000.h (NO_FUNCTION_CSE): Likewise.
+       * config/s390/s390.h (NO_FUNCTION_CSE): Likewise.
+       * config/sparc/sparc.h (NO_FUNCTION_CSE): Likewise.
+       * config/spu/spu.h (NO_FUNCTION_CSE): Likewise.
+       * config/stormy16/stormy16.h (NO_FUNCTION_CSE): Likewise.
+       * config/v850/v850.h (NO_FUNCTION_CSE): Likewise.
+       * defaults.h (NO_FUNCTION_CSE): Provide default definition to 0.
+       * doc/tm.texi: Regenerate.
+       * doc/tm.texi.in: Document NO_FUNCTION_CSE is always defined to
+       either true or false.
+
 2015-04-27  Jeff Law  <law@redhat.com>
 
        PR tree-optimization/65217
index 3be7ca5f4a58ffeb2d3b1a34d10b01a3d520f71e..a6cd33b32a96bd51a083a123b081e889b20dd6a9 100644 (file)
@@ -227,10 +227,8 @@ prepare_call_address (tree fndecl_or_type, rtx funexp, rtx static_chain_value,
              : memory_address (FUNCTION_MODE, funexp));
   else if (! sibcallp)
     {
-#ifndef NO_FUNCTION_CSE
-      if (optimize && ! flag_no_function_cse)
+      if (!NO_FUNCTION_CSE && optimize && ! flag_no_function_cse)
        funexp = force_reg (Pmode, funexp);
-#endif
     }
 
   if (static_chain_value != 0
index d2181291fd10a092531dff4ce053c1e43ef3c38e..fb3849a6b801f2da6581d7319fbe8ede83075fae 100644 (file)
@@ -933,7 +933,7 @@ do {                                                                             \
    then copy it into a register, thus actually letting the address be
    cse'ed.  */
 
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 /* Define this to be nonzero if shift instructions ignore all but the low-order
    few bits.  */
index 3be5c93af269242cd0e23908cdb26f2e1fca7502..66965b0f66c7928beca43d6e356d566d1b0a1c2b 100644 (file)
@@ -1108,7 +1108,7 @@ arc_select_cc_mode (OP, X, Y)
 /* Define this macro if it is as good or better to call a constant
    function address than to call an address kept in a register.  */
 /* On the ARC, calling through registers is slow.  */
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 /* Section selection.  */
 /* WARNING: These section names also appear in dwarfout.c.  */
index 9963766fe91a5c5297a524bb260e03b2ea560d3c..d8bee773c6361591373e843a3ecee5004c370769 100644 (file)
@@ -362,7 +362,7 @@ typedef struct avr_args
 
 #define SLOW_BYTE_ACCESS 0
 
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 #define REGISTER_TARGET_PRAGMAS()                                       \
   do {                                                                  \
index e00802df2dc59f696668e85f569ccbab51209772..e5df6f95330121904af317acaaa8032fd5869221 100644 (file)
@@ -467,7 +467,7 @@ struct cumulative_args
 
 /* It is as good or better to call a constant function address than to
    call an address kept in a register.  */
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 /* Dividing the output into sections.  */
 
index ca8fa1978929171eede8d578b3742f8626486300..dab368c9cce070e08f4666d40e7a6a7e510a3363 100644 (file)
@@ -692,7 +692,7 @@ typedef struct GTY (()) machine_function
 /* Define this macro if it is as good or better to call a constant
    function address than to call an address kept in a register.  */
 /* On the EPIPHANY, calling through registers is slow.  */
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 \f
 /* Section selection.  */
 /* WARNING: These section names also appear in dwarf2out.c.  */
index d8964456124a7b44039a940bae30839c053677c7..394572c1423d5e44d832d9f0deaa316afb85ba00 100644 (file)
@@ -1539,7 +1539,7 @@ __asm__("\n"                                                              \
 
 /* Define this macro if it is as good or better to call a constant function
    address than to call an address kept in a register.  */
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 \f
 /* Dividing the output into sections.  */
index 86fd7d1f33811b66ca7a0b1b4bd6103f6efc4b27..a17d7d56621865f6661947bde8440f4fb21f078a 100644 (file)
@@ -136,7 +136,7 @@ extern const char * const *h8_reg_names;
    Calls through a register are cheaper than calls to named
    functions; however, the register pressure this causes makes
    CSEing of function addresses generally a lose.  */
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 \f
 /* Target machine storage layout */
 
index a645c2a21a502966d0dc3254a5a901e734743d51..6901e2aae8fc740caa85f6efa7d3002953902a94 100644 (file)
@@ -2017,7 +2017,7 @@ do {                                                      \
    Desirable on the 386 because a CALL with a constant address is
    faster than one with a register address.  */
 
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 \f
 /* Given a comparison code (EQ, NE, etc.) and the first operand of a COMPARE,
    return the mode to be used for the comparison.
index b3857ba19573d7d3c10cd024db4bd49793b72259..943faf9e0a966e9ab0b3494e3af85e685ad1f15e 100644 (file)
@@ -1178,7 +1178,7 @@ do {                                                                      \
    Indirect function calls are more expensive that direct function calls, so
    don't cse function addresses.  */
 
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 \f
 /* Dividing the output into sections.  */
index 85185c4198717bb4604bd312f77a9451c5856f43..04ff7c836a41238e55b9c04c4dfe4855671174f0 100644 (file)
@@ -354,7 +354,7 @@ enum reg_class
 
 #define SLOW_BYTE_ACCESS 1
 
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 #define BRANCH_COST(speed_p, predictable_p) 4
 
index 9eb673d1a44400eef4ee89a067a3ddb7ad23f96b..ee0c447187a5642a04206fe8cff60299af683cdf 100644 (file)
@@ -767,7 +767,7 @@ L2:     .word STATIC
 
 /* Define this macro if it is as good or better to call a constant
    function address than to call an address kept in a register.  */
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 \f
 /* Section selection.  */
 
index d59118c8bcb695a8cc929e35b93cf8c5c140b973..861189d54200ca387114049e7e4fe446af145162 100644 (file)
@@ -554,7 +554,7 @@ typedef struct
 
 /* Define this macro if it is as good or better to call a constant function
    address than to call an address kept in a register.  */
-#define NO_FUNCTION_CSE 
+#define NO_FUNCTION_CSE 1
 
 \f
 #define TEXT_SECTION_ASM_OP "\t.text\n\t.core"
index 3609da8d59d69ad0eb2dc73e3565d2dcb5ea1062..d41dc4e0aa553ffc67dac00830658faf37df0e98 100644 (file)
@@ -579,7 +579,7 @@ do {                                                                             \
    than accessing full words.  */
 #define SLOW_BYTE_ACCESS 1
 
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 /* According expr.c, a value of around 6 should minimize code size, and
    for the MN10300 series, that's our primary concern.  */
index 3c7a7b3e9f22d454b1b8429b72a1676275228905..963b3a252a5ba6afacacbe00185e858b945bb99b 100644 (file)
@@ -831,7 +831,7 @@ enum reg_class
 
 #define SLOW_BYTE_ACCESS 1
 
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 \f
 /* Adjusting the Instruction Scheduler.  */
index 117983d80ae1253c04810c5f75bcb5735c3449d6..193845be297307336459c4c28135819a379dc7bb 100644 (file)
@@ -306,7 +306,7 @@ typedef struct nios2_args
 
 /* It is as good to call a constant function address as to call an address
    kept in a register.  */
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 /* Position independent code.  */
 
index 8314ba39e4ca7e519ae3e4bf30f2b29f094c04fd..6c48883d26d8b250cfd8bcb6d1e844132d0eaa7a 100644 (file)
@@ -1048,7 +1048,7 @@ do {                                                                           \
    shouldn't be put through pseudo regs where they can be cse'd.
    Desirable on machines where ordinary constants are expensive
    but a CALL with constant address is cheap.  */
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 /* Define this to be nonzero if shift instructions ignore all but the low-order
    few bits.  */
index 653c2c94e11a6f22d20fe3e33532e4d354c2be5e..c93c3ce18847d2a2ebe8c3070da6d0e8c8b3ce25 100644 (file)
@@ -2080,7 +2080,7 @@ extern unsigned rs6000_pmode;
    shouldn't be put through pseudo regs where they can be cse'd.
    Desirable on machines where ordinary constants are expensive
    but a CALL with constant address is cheap.  */
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 /* Define this to be nonzero if shift instructions ignore all but the low-order
    few bits.
index 49530757134f126204c2c7cd1c92f3d2193431b2..f8874098381d2b4763d54e9832745b3241e49ff2 100644 (file)
@@ -745,7 +745,7 @@ do {                                                                        \
 #define MAX_MOVE_MAX 16
 
 /* Don't perform CSE on function addresses.  */
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 /* This value is used in tree-sra to decide whether it might benefical
    to split a struct move into several word-size moves.  For S/390
index 27ad748076e67c6280f459ca2fa9bd797ee637fd..9b64ff4f9bb1ffd348771058632173a0e5525048 100644 (file)
@@ -1518,7 +1518,7 @@ do {                                                                         \
    shouldn't be put through pseudo regs where they can be cse'd.
    Desirable on machines where ordinary constants are expensive
    but a CALL with constant address is cheap.  */
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 /* The _Q_* comparison libcalls return booleans.  */
 #define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) ((MODE) == TFmode)
index de26d2aafd511c85ab54cfa1a2b9df822e6b7243..24d8047f0e67b4a9b7a7e79c19c6b4ea3cc2732d 100644 (file)
@@ -407,7 +407,7 @@ do {                                                                        \
 
 #define MOVE_RATIO(speed) ((speed)? 32 : 4)
 
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 \f
 /* Sections */
index 338c08e68c554f8c8c03da9e48165979981d36e8..38a2a0676a6a80997d00bd45253938f4e6a1c2af 100644 (file)
@@ -345,7 +345,7 @@ enum reg_class
 
 #define SLOW_BYTE_ACCESS 0
 
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 \f
 /* Dividing the output into sections.  */
index 508ef85bfb83a325b035350fefc9ff5023588b4c..2f0118c4fcc3f2777fb812d939331cd692fe5bb6 100644 (file)
@@ -710,7 +710,7 @@ do {                                                                        \
 
 /* Indirect calls are expensive, never turn a direct call
    into an indirect call.  */
-#define NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE 1
 
 /* The four different data regions on the v850.  */
 typedef enum 
index 88a15e4b39ba050c0ebc9249196ca2daa3bbcae8..15eb33e0936d084c1e366d6c4ebfac8a4e91e3f3 100644 (file)
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -3183,12 +3183,10 @@ fold_rtx (rtx x, rtx_insn *insn)
        }
       return x;
 
-#ifdef NO_FUNCTION_CSE
     case CALL:
-      if (CONSTANT_P (XEXP (XEXP (x, 0), 0)))
+      if (NO_FUNCTION_CSE && CONSTANT_P (XEXP (XEXP (x, 0), 0)))
        return x;
       break;
-#endif
 
     /* Anything else goes through the loop below.  */
     default:
index cafcb1ee9209d96ea0792f267a46edabec6ec20c..4ae5d98ebbcc823f12703b07536b24ecfc395568 100644 (file)
@@ -1209,6 +1209,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #define INSN_REFERENCES_ARE_DELAYED(INSN) false
 #endif
 
+#ifndef NO_FUNCTION_CSE
+#define NO_FUNCTION_CSE false
+#endif
+
 #ifdef GCC_INSN_FLAGS_H
 /* Dependent default target macro definitions
 
index 6c5bfabfaa9fc750ab0215920814b05da6d7d4a4..619d7e0f10d4cb7b574759f2fb3c1bbffd26331e 100644 (file)
@@ -6344,7 +6344,7 @@ thing to use for a given mode.  Defaults to the value of
 @end defmac
 
 @defmac NO_FUNCTION_CSE
-Define this macro if it is as good or better to call a constant
+Define this macro to be true if it is as good or better to call a constant
 function address than to call an address kept in a register.
 @end defmac
 
index 8d6dfbc205e889104f55ec6a51018c73116bf82b..6ff7aed9293d6aa92060ed24f632bbcbbf6cf846 100644 (file)
@@ -4708,7 +4708,7 @@ thing to use for a given mode.  Defaults to the value of
 @end defmac
 
 @defmac NO_FUNCTION_CSE
-Define this macro if it is as good or better to call a constant
+Define this macro to be true if it is as good or better to call a constant
 function address than to call an address kept in a register.
 @end defmac