Hello, The target hooks TARGET_INVALID_PARAMETER_TYPE and TARGET_INVALID_RETURN_TYPE were only used by the ARM backend and are no longer used. This patch removes them.
Tested for arm-none-linux-gnueabihf with native bootstrap and make check and for and x86_64-none-linux native bootstrap and check-gcc. Ok for trunk? Matthew c/ 2016-05-03 Matthew Wahab <matthew.wa...@arm.com> * c-decl.c (grokdeclarator): Remove errmsg and use of targetm.invalid_return_type. (grokparms): Remove errmsg and use of targetm.invalid_parameter_type. cp/ 2016-05-03 Matthew Wahab <matthew.wa...@arm.com> * decl.c (grokdeclarator): Remove errmsg and use of targetm.invalid_return_type. (grokparms): Remove errmsg and use of targetm.invalid_parameter_type. gcc/ 2016-05-03 Matthew Wahab <matthew.wa...@arm.com> * doc/tm.texi: Regenerate. * doc/tm.texi.in (TARGET_INVALID_PARAMETER_TYPE): Remove. (TARGET_INVALID_RETURN_TYPE): Remove. * system.h: Poison TARGET_INVALID_PARAMETER_TYPE and TARGET_INVALID_RETURN_TYPE. * target.def (invalid_parameter_type): Remove. (invalid_return_type): Remove.
>From 67c843ec9c20f361ecc18e8b60235577c277c1e6 Mon Sep 17 00:00:00 2001 From: Matthew Wahab <matthew.wa...@arm.com> Date: Fri, 29 Apr 2016 09:24:24 +0100 Subject: [PATCH] [PATCH] Remove TARGET_INVALID_PARAMETER_TYPE and TARGET_INVALID_RETURN_TYPE hooks. The target hooks TARGET_INVALID_PARAMETER_TYPE and TARGET_INVALID_RETURN_TYPE were only used by the ARM backend. Since they are no longer used, this patch removes them. Tested for arm-none-linux-gnueabihf with native bootstrap and make check and for and x86_64-none-linux native bootstrap and check-gcc. c/ 2016-05-03 Matthew Wahab <matthew.wa...@arm.com> * c-decl.c (grokdeclarator): Remove errmsg and use of targetm.invalid_return_type. (grokparms): Remove errmsg and use of targetm.invalid_parameter_type. cp/ 2016-05-03 Matthew Wahab <matthew.wa...@arm.com> * decl.c (grokdeclarator): Remove errmsg and use of targetm.invalid_return_type. (grokparms): Remove errmsg and use of targetm.invalid_parameter_type. gcc/ 2016-05-03 Matthew Wahab <matthew.wa...@arm.com> * doc/tm.texi: Regenerate. * doc/tm.texi.in (TARGET_INVALID_PARAMETER_TYPE): Remove. (TARGET_INVALID_RETURN_TYPE): Remove. * system.h: Poison TARGET_INVALID_PARAMETER_TYPE and TARGET_INVALID_RETURN_TYPE. * target.def (invalid_parameter_type): Remove. (invalid_return_type): Remove. --- gcc/c/c-decl.c | 17 ----------------- gcc/cp/decl.c | 16 ---------------- gcc/doc/tm.texi | 14 -------------- gcc/doc/tm.texi.in | 4 ---- gcc/system.h | 4 +++- gcc/target.def | 22 ---------------------- 6 files changed, 3 insertions(+), 74 deletions(-) diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index f0c677b..2232693 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -5391,7 +5391,6 @@ grokdeclarator (const struct c_declarator *declarator, struct c_arg_info *arg_info = 0; addr_space_t as1, as2, address_space; location_t loc = UNKNOWN_LOCATION; - const char *errmsg; tree expr_dummy; bool expr_const_operands_dummy; enum c_declarator_kind first_non_attr_kind; @@ -6114,12 +6113,6 @@ grokdeclarator (const struct c_declarator *declarator, "an array"); type = integer_type_node; } - errmsg = targetm.invalid_return_type (type); - if (errmsg) - { - error (errmsg); - type = integer_type_node; - } /* Construct the function type and go to the next inner layer of declarator. */ @@ -6856,7 +6849,6 @@ grokparms (struct c_arg_info *arg_info, bool funcdef_flag) { tree parm, type, typelt; unsigned int parmno; - const char *errmsg; /* If there is a parameter of incomplete type in a definition, this is an error. In a declaration this is valid, and a @@ -6905,15 +6897,6 @@ grokparms (struct c_arg_info *arg_info, bool funcdef_flag) } } - errmsg = targetm.invalid_parameter_type (type); - if (errmsg) - { - error (errmsg); - TREE_VALUE (typelt) = error_mark_node; - TREE_TYPE (parm) = error_mark_node; - arg_types = NULL_TREE; - } - if (DECL_NAME (parm) && TREE_USED (parm)) warn_if_shadowing (parm); } diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 461822b..c866613 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -9271,7 +9271,6 @@ grokdeclarator (const cp_declarator *declarator, bool late_return_type_p = false; bool array_parameter_p = false; source_location saved_loc = input_location; - const char *errmsg; tree reqs = NULL_TREE; signed_p = decl_spec_seq_has_spec_p (declspecs, ds_signed); @@ -10071,12 +10070,6 @@ grokdeclarator (const cp_declarator *declarator, decl, but to its return type. */ type_quals = TYPE_UNQUALIFIED; } - errmsg = targetm.invalid_return_type (type); - if (errmsg) - { - error (errmsg); - type = integer_type_node; - } /* Error about some types functions can't return. */ @@ -11706,7 +11699,6 @@ grokparms (tree parmlist, tree *parms) tree type = NULL_TREE; tree init = TREE_PURPOSE (parm); tree decl = TREE_VALUE (parm); - const char *errmsg; if (parm == void_list_node) break; @@ -11749,14 +11741,6 @@ grokparms (tree parmlist, tree *parms) init = NULL_TREE; } - if (type != error_mark_node - && (errmsg = targetm.invalid_parameter_type (type))) - { - error (errmsg); - type = error_mark_node; - TREE_TYPE (decl) = error_mark_node; - } - if (type != error_mark_node) { if (deprecated_state != DEPRECATED_SUPPRESS) diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 745910f..283b508 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -11498,20 +11498,6 @@ and @var{type2}, or @code{NULL} if validity should be determined by the front end. @end deftypefn -@deftypefn {Target Hook} {const char *} TARGET_INVALID_PARAMETER_TYPE (const_tree @var{type}) -If defined, this macro returns the diagnostic message when it is -invalid for functions to include parameters of type @var{type}, -or @code{NULL} if validity should be determined by -the front end. This is currently used only by the C and C++ front ends. -@end deftypefn - -@deftypefn {Target Hook} {const char *} TARGET_INVALID_RETURN_TYPE (const_tree @var{type}) -If defined, this macro returns the diagnostic message when it is -invalid for functions to have return type @var{type}, -or @code{NULL} if validity should be determined by -the front end. This is currently used only by the C and C++ front ends. -@end deftypefn - @deftypefn {Target Hook} tree TARGET_PROMOTED_TYPE (const_tree @var{type}) If defined, this target hook returns the type to which values of @var{type} should be promoted when they appear in expressions, diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in index f31c763..b6cc572 100644 --- a/gcc/doc/tm.texi.in +++ b/gcc/doc/tm.texi.in @@ -8167,10 +8167,6 @@ and scanf formatter settings. @hook TARGET_INVALID_BINARY_OP -@hook TARGET_INVALID_PARAMETER_TYPE - -@hook TARGET_INVALID_RETURN_TYPE - @hook TARGET_PROMOTED_TYPE @hook TARGET_CONVERT_TO_TYPE diff --git a/gcc/system.h b/gcc/system.h index 984f302..78a7da6 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -987,7 +987,9 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; TARGET_HANDLE_PRAGMA_EXTERN_PREFIX \ TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN \ TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD \ - TARGET_MD_ASM_CLOBBERS TARGET_RELAXED_ORDERING EXTENDED_SDB_BASIC_TYPES + TARGET_MD_ASM_CLOBBERS TARGET_RELAXED_ORDERING \ + EXTENDED_SDB_BASIC_TYPES TARGET_INVALID_PARAMETER_TYPE \ + TARGET_INVALID_RETURN_TYPE /* Arrays that were deleted in favor of a functional interface. */ #pragma GCC poison built_in_decls implicit_built_in_decls diff --git a/gcc/target.def b/gcc/target.def index 20f2b32..6392e73 100644 --- a/gcc/target.def +++ b/gcc/target.def @@ -4820,28 +4820,6 @@ the front end.", const char *, (int op, const_tree type1, const_tree type2), hook_constcharptr_int_const_tree_const_tree_null) -/* Return the diagnostic message string if TYPE is not valid as a - function parameter type, NULL otherwise. */ -DEFHOOK -(invalid_parameter_type, - "If defined, this macro returns the diagnostic message when it is\n\ -invalid for functions to include parameters of type @var{type},\n\ -or @code{NULL} if validity should be determined by\n\ -the front end. This is currently used only by the C and C++ front ends.", - const char *, (const_tree type), - hook_constcharptr_const_tree_null) - -/* Return the diagnostic message string if TYPE is not valid as a - function return type, NULL otherwise. */ -DEFHOOK -(invalid_return_type, - "If defined, this macro returns the diagnostic message when it is\n\ -invalid for functions to have return type @var{type},\n\ -or @code{NULL} if validity should be determined by\n\ -the front end. This is currently used only by the C and C++ front ends.", - const char *, (const_tree type), - hook_constcharptr_const_tree_null) - /* If values of TYPE are promoted to some other type when used in expressions (analogous to the integer promotions), return that type, or NULL_TREE otherwise. */ -- 2.1.4