i386.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to...
authorEric Botcazou <ebotcazou@adacore.com>
Mon, 17 Oct 2016 22:34:53 +0000 (22:34 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Mon, 17 Oct 2016 22:34:53 +0000 (22:34 +0000)
* config/i386/i386.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to...
* config/i386/i386.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ...here.
* config/ia64/ia64.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to...
* config/ia64/ia64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ...here.
* config/rs6000/rs6000.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to.
* config/rs6000/rs6000.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ...here.
(rs6000_option_override_internal): Clear it if ABI_AIX.
* config/sparc/sparc.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to...
* config/sparc/sparc.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ... here.

From-SVN: r241285

12 files changed:
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/config/ia64/ia64.c
gcc/config/ia64/ia64.h
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h
gcc/config/sparc/sparc.c
gcc/config/sparc/sparc.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/Wtrampolines.c
gcc/testsuite/gnat.dg/trampoline4.adb

index 7bf7d91fb42cd560758c168dcc60526dc672c66a..dcf210f3511bc23ef4e3f21450f0286c50c52d44 100644 (file)
@@ -1,3 +1,15 @@
+2016-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/i386/i386.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to...
+       * config/i386/i386.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ...here.
+       * config/ia64/ia64.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to...
+       * config/ia64/ia64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ...here.
+       * config/rs6000/rs6000.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to.
+       * config/rs6000/rs6000.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ...here.
+       (rs6000_option_override_internal): Clear it if ABI_AIX.
+       * config/sparc/sparc.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to...
+       * config/sparc/sparc.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ... here.
+
 2016-10-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        * gimple-ssa-strength-reduction.c (record_increment): Remove
index eef6d7b53dc3c1d6c54864f18b37e129c931d8b7..bafbe75b628288a5aa265fc3d253cdb717a9f36d 100644 (file)
@@ -50833,6 +50833,9 @@ ix86_addr_space_zero_address_valid (addr_space_t as)
 #undef TARGET_HARD_REGNO_SCRATCH_OK
 #define TARGET_HARD_REGNO_SCRATCH_OK ix86_hard_regno_scratch_ok
 
+#undef TARGET_CUSTOM_FUNCTION_DESCRIPTORS
+#define TARGET_CUSTOM_FUNCTION_DESCRIPTORS 1
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 \f
 #include "gt-i386.h"
index fe3735d01b99a8172dd96e4c2757e9616a6a080a..add7a64778f0b722cf186901f08e4e807cd56b7a 100644 (file)
@@ -2666,9 +2666,6 @@ extern void debug_dispatch_window (int);
 
 #define TARGET_SUPPORTS_WIDE_INT 1
 
-/* Use custom descriptors instead of trampolines when possible.  */
-#define TARGET_CUSTOM_FUNCTION_DESCRIPTORS 1
-
 /*
 Local variables:
 version-control: t
index 797b1b0830de1d3bae403742bb55a09989f649a6..31a2267a0f8d1583cbbcedd1976a4b3970255399 100644 (file)
@@ -649,6 +649,9 @@ static const struct attribute_spec ia64_attribute_table[] =
 #undef TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P
 #define TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P ia64_attribute_takes_identifier_p
 
+#undef TARGET_CUSTOM_FUNCTION_DESCRIPTORS
+#define TARGET_CUSTOM_FUNCTION_DESCRIPTORS 0
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 \f
 /* Returns TRUE iff the target attribute indicated by ATTR_ID takes a plain
index 82971a4a0f505af49ee13425ad2e9f8cb762cd86..ac0cb864209126c7d34708ccb4d09d398b9d44a1 100644 (file)
@@ -1715,7 +1715,4 @@ struct GTY(()) machine_function
 /* Switch on code for querying unit reservations.  */
 #define CPU_UNITS_QUERY 1
 
-/* IA-64 already uses descriptors for its standard calling sequence.  */
-#define TARGET_CUSTOM_FUNCTION_DESCRIPTORS 0
-
 /* End of ia64.h */
index 613af483e7431ad35f5564b08e9ec74e01d3dabc..27611876b4fb853a5c962f039747eee74d9cd083 100644 (file)
@@ -1867,6 +1867,9 @@ static const struct attribute_spec rs6000_attribute_table[] =
 
 #undef TARGET_OPTAB_SUPPORTED_P
 #define TARGET_OPTAB_SUPPORTED_P rs6000_optab_supported_p
+
+#undef TARGET_CUSTOM_FUNCTION_DESCRIPTORS
+#define TARGET_CUSTOM_FUNCTION_DESCRIPTORS 1
 \f
 
 /* Processor table.  */
@@ -4862,6 +4865,10 @@ rs6000_option_override_internal (bool global_init_p)
         Linux and Darwin ABIs at the moment.  For now, only AIX is fixed.  */
       if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN)
        targetm.calls.split_complex_arg = NULL;
+
+      /* The AIX and ELFv1 ABIs define standard function descriptors.  */
+      if (DEFAULT_ABI == ABI_AIX)
+       targetm.calls.custom_function_descriptors = 0;
     }
 
   /* Initialize rs6000_cost with the appropriate target costs.  */
index f1c338eb771ec2cf727adcdcb5bc05b8409c8ab6..f53da1551602d84d081a8a5a499b323b7835d200 100644 (file)
@@ -2922,9 +2922,6 @@ extern GTY(()) tree rs6000_builtin_decls[RS6000_BUILTIN_COUNT];
 
 #define TARGET_SUPPORTS_WIDE_INT 1
 
-/* Use custom descriptors instead of trampolines if not AIX or ELFv1.  */
-#define TARGET_CUSTOM_FUNCTION_DESCRIPTORS (DEFAULT_ABI != ABI_AIX)
-
 #if (GCC_VERSION >= 3000)
 #pragma GCC poison TARGET_FLOAT128 OPTION_MASK_FLOAT128 MASK_FLOAT128
 #endif
index 74435a51ac51a031390392f93b8f0e446df692ce..4b878c1fcddc7867dbcb1126e3fa8ee193eabd24 100644 (file)
@@ -866,6 +866,9 @@ char sparc_hard_reg_printed[8];
 #undef TARGET_FIXED_CONDITION_CODE_REGS
 #define TARGET_FIXED_CONDITION_CODE_REGS sparc_fixed_condition_code_regs
 
+#undef TARGET_CUSTOM_FUNCTION_DESCRIPTORS
+#define TARGET_CUSTOM_FUNCTION_DESCRIPTORS 1
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 
 /* Return the memory reference contained in X if any, zero otherwise.  */
index 108769ff893edeeb94ab3423adaa3ca9832c9c4d..5389216baa2cc82d938729416ac75ddebecf0109 100644 (file)
@@ -1813,6 +1813,3 @@ extern int sparc_indent_opcode;
 #define SPARC_LOW_FE_EXCEPT_VALUES 0
 
 #define TARGET_SUPPORTS_WIDE_INT 1
-
-/* Use custom descriptors instead of trampolines when possible.  */
-#define TARGET_CUSTOM_FUNCTION_DESCRIPTORS 1
index ddad6fc9a8925843cc04b9bcab4a59e78eb00411..12bcfa6ade71d70bd7c98b7c569addd65f5b24e1 100644 (file)
@@ -1,3 +1,8 @@
+2016-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc.dg/Wtrampolines.c: XFAIL warning on ia64-*-* and powerpc64-*-*.
+       * gnat.dg/trampoline4.adb: Minor tweak.
+
 2016-10-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        PR tree-optimization/77916
index dcb368147749a8947b85fa4986deaad0f78f8295..62b782a8bf0f83d927be2ff2d30e1a448fdca955 100644 (file)
@@ -28,7 +28,7 @@ void foo (void)
 
   double a (int k, pfun x1, pfun x2, pfun x3, pfun x4, pfun x5)
   {
-    double b (void)  /* { dg-warning "trampoline generated for nested function 'b'" } */
+    double b (void)  /* { dg-warning "trampoline generated for nested function 'b'" "standard descriptors" { xfail ia64-*-* powerpc64-*-* } } */
     { 
       k = k - 1;
       return a (k, b, x1, x2, x3, x4 );
index f825c0210ce3568e07244f79aaa96b3c86f4d882..dd0d760affcded2413e07be66d178a2ce4969f17 100644 (file)
@@ -1,6 +1,6 @@
 -- { dg-do compile { target *-*-linux* } }
 -- { dg-options "-ftrampolines -gnatws" }
--- { dg-skip-if "native descriptors" { ia64-*-* powerpc64-*-* } }
+-- { dg-skip-if "standard descriptors" { ia64-*-* powerpc64-*-* } }
 
 procedure Trampoline4 is