From 86f980870a28bc9022cc57362b5031ede43ecff9 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 17 Oct 2016 22:34:53 +0000 Subject: [PATCH] i386.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to... * 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 --- gcc/ChangeLog | 12 ++++++++++++ gcc/config/i386/i386.c | 3 +++ gcc/config/i386/i386.h | 3 --- gcc/config/ia64/ia64.c | 3 +++ gcc/config/ia64/ia64.h | 3 --- gcc/config/rs6000/rs6000.c | 7 +++++++ gcc/config/rs6000/rs6000.h | 3 --- gcc/config/sparc/sparc.c | 3 +++ gcc/config/sparc/sparc.h | 3 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/Wtrampolines.c | 2 +- gcc/testsuite/gnat.dg/trampoline4.adb | 2 +- 12 files changed, 35 insertions(+), 14 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7bf7d91..dcf210f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2016-10-17 Eric Botcazou + + * 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 * gimple-ssa-strength-reduction.c (record_increment): Remove diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index eef6d7b..bafbe75 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -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; #include "gt-i386.h" diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index fe3735d..add7a64 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -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 diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 797b1b0..31a2267 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -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; /* Returns TRUE iff the target attribute indicated by ATTR_ID takes a plain diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h index 82971a4..ac0cb86 100644 --- a/gcc/config/ia64/ia64.h +++ b/gcc/config/ia64/ia64.h @@ -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 */ diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 613af48..2761187 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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 /* 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. */ diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index f1c338e..f53da15 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -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 diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 74435a5..4b878c1 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -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. */ diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h index 108769f..5389216 100644 --- a/gcc/config/sparc/sparc.h +++ b/gcc/config/sparc/sparc.h @@ -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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ddad6fc..12bcfa6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-10-17 Eric Botcazou + + * gcc.dg/Wtrampolines.c: XFAIL warning on ia64-*-* and powerpc64-*-*. + * gnat.dg/trampoline4.adb: Minor tweak. + 2016-10-17 Bill Schmidt PR tree-optimization/77916 diff --git a/gcc/testsuite/gcc.dg/Wtrampolines.c b/gcc/testsuite/gcc.dg/Wtrampolines.c index dcb3681..62b782a 100644 --- a/gcc/testsuite/gcc.dg/Wtrampolines.c +++ b/gcc/testsuite/gcc.dg/Wtrampolines.c @@ -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 ); diff --git a/gcc/testsuite/gnat.dg/trampoline4.adb b/gcc/testsuite/gnat.dg/trampoline4.adb index f825c02..dd0d760 100644 --- a/gcc/testsuite/gnat.dg/trampoline4.adb +++ b/gcc/testsuite/gnat.dg/trampoline4.adb @@ -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 -- 2.7.4