From 4849deb1a30681b31d51da7501c6432b12324593 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 15 Dec 2017 16:13:12 +0100 Subject: [PATCH] tree-core.h (struct attribute_spec): Swap affects_type_identity and handler fields. * tree-core.h (struct attribute_spec): Swap affects_type_identity and handler fields. * config/alpha/alpha.c (vms_attribute_table): Swap affects_type_identity and handler fields, adjust comments. * config/mips/mips.c (mips_attribute_table): Likewise. * config/visium/visium.c (visium_attribute_table): Likewise. * config/epiphany/epiphany.c (epiphany_attribute_table): Likewise. * config/microblaze/microblaze.c (microblaze_attribute_table): Likewise. * config/spu/spu.c (spu_attribute_table): Likewise. * config/mcore/mcore.c (mcore_attribute_table): Likewise. * config/arc/arc.c (arc_attribute_table): Likewise. * config/m68k/m68k.c (m68k_attribute_table): Likewise. * config/v850/v850.c (v850_handle_interrupt_attribute, v850_handle_data_area_attribute): Formatting fixes. (v850_attribute_table): Swap affects_type_identity and handler fields, adjust comments. * config/m32r/m32r.c (m32r_attribute_table): Likewise. * config/arm/arm.c (arm_attribute_table): Likewise. * config/avr/avr.c (avr_attribute_table): Likewise. * config/s390/s390.c (s390_attribute_table): Likewise. * config/sh/sh.c (sh_attribute_table): Likewise. * config/i386/i386.c (ix86_handle_cconv_attribute, ix86_handle_callee_pop_aggregate_return): Formatting fixes. (ix86_attribute_table): Swap affects_type_identity and handler fields, adjust comments. * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise. * config/sparc/sparc.c (sparc_attribute_table): Likewise. * config/m32c/m32c.c (m32c_attribute_table): Likewise. * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise. * config/ia64/ia64.c (ia64_attribute_table): Likewise. * config/msp430/msp430.c (msp430_attribute_table): Likewise. * config/rx/rx.c (rx_attribute_table): Likewise. * config/cr16/cr16.c (cr16_attribute_table): Likewise. * config/h8300/h8300.c (h8300_attribute_table): Likewise. * config/nvptx/nvptx.c (nvptx_attribute_table): Likewise. * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise. * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise. * config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise. * config/bfin/bfin.c (bfin_attribute_table): Likewise. * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise. * config/rl78/rl78.c (rl78_attribute_table): Likewise. * config/nds32/nds32.c (nds32_attribute_table): Likewise. * doc/plugins.texi (user_attr): Likewise. Add NULL for exclude. * attribs.c (empty_attribute_table): Swap affects_type_identity and handler fields. (register_scoped_attributes, decl_attributes): Formatting fixes. ada/ * gcc-interface/utils.c (gnat_internal_attribute_table): Swap affects_type_identity and handler fields, adjust comments. brig/ * brig-lang.c (brig_attribute_table): Swap affects_type_identity and handler fields, adjust comments. c-family/ * c-attribs.c (c_common_attribute_table, c_common_format_attribute_table): Swap affects_type_identity and handler fields, adjust comments. cp/ * tree.c (cxx_attribute_table, std_attribute_table): Swap affects_type_identity and handler fields, adjust comments. fortran/ * f95-lang.c (gfc_attribute_table): Swap affects_type_identity and handler fields, adjust comments. lto/ * lto-lang.c (lto_attribute_table, lto_format_attribute_table): Swap affects_type_identity and handler fields, adjust comments. testsuite/ * g++.dg/plugin/attribute_plugin.c (user_attr): Swap affects_type_identity and handler fields, add NULL for exclude. From-SVN: r255699 --- gcc/ChangeLog | 49 +++ gcc/ada/ChangeLog | 5 + gcc/ada/gcc-interface/utils.c | 74 ++-- gcc/attribs.c | 12 +- gcc/brig/ChangeLog | 5 + gcc/brig/brig-lang.c | 26 +- gcc/c-family/ChangeLog | 6 + gcc/c-family/c-attribs.c | 393 +++++++++--------- gcc/config/alpha/alpha.c | 8 +- gcc/config/arc/arc.c | 18 +- gcc/config/arm/arm.c | 50 +-- gcc/config/avr/avr.c | 55 ++- gcc/config/bfin/bfin.c | 48 +-- gcc/config/cr16/cr16.c | 8 +- gcc/config/darwin.h | 12 +- gcc/config/epiphany/epiphany.c | 18 +- gcc/config/h8300/h8300.c | 34 +- gcc/config/i386/cygming.h | 8 +- gcc/config/i386/i386.c | 94 ++--- gcc/config/ia64/ia64.c | 20 +- gcc/config/m32c/m32c.c | 17 +- gcc/config/m32r/m32r.c | 12 +- gcc/config/m68k/m68k.c | 18 +- gcc/config/mcore/mcore.c | 14 +- gcc/config/microblaze/microblaze.c | 19 +- gcc/config/mips/mips.c | 36 +- gcc/config/msp430/msp430.c | 30 +- gcc/config/nds32/nds32.c | 28 +- gcc/config/nvptx/nvptx.c | 10 +- gcc/config/powerpcspe/powerpcspe.c | 26 +- gcc/config/rl78/rl78.c | 22 +- gcc/config/rs6000/rs6000.c | 26 +- gcc/config/rx/rx.c | 22 +- gcc/config/s390/s390.c | 10 +- gcc/config/sh/sh.c | 38 +- gcc/config/sol2.h | 4 +- gcc/config/sparc/sparc.c | 6 +- gcc/config/spu/spu.c | 14 +- gcc/config/stormy16/stormy16.c | 18 +- gcc/config/v850/v850.c | 32 +- gcc/config/visium/visium.c | 10 +- gcc/cp/ChangeLog | 7 +- gcc/cp/tree.c | 28 +- gcc/doc/plugins.texi | 2 +- gcc/fortran/ChangeLog | 5 + gcc/fortran/f95-lang.c | 18 +- gcc/lto/ChangeLog | 5 + gcc/lto/lto-lang.c | 80 ++-- gcc/testsuite/ChangeLog | 5 + .../g++.dg/plugin/attribute_plugin.c | 2 +- gcc/tree-core.h | 4 +- 51 files changed, 790 insertions(+), 721 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 60f621d8fd1..8830638d226 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,54 @@ 2017-12-15 Jakub Jelinek + * tree-core.h (struct attribute_spec): Swap affects_type_identity and + handler fields. + * config/alpha/alpha.c (vms_attribute_table): Swap + affects_type_identity and handler fields, adjust comments. + * config/mips/mips.c (mips_attribute_table): Likewise. + * config/visium/visium.c (visium_attribute_table): Likewise. + * config/epiphany/epiphany.c (epiphany_attribute_table): Likewise. + * config/microblaze/microblaze.c (microblaze_attribute_table): + Likewise. + * config/spu/spu.c (spu_attribute_table): Likewise. + * config/mcore/mcore.c (mcore_attribute_table): Likewise. + * config/arc/arc.c (arc_attribute_table): Likewise. + * config/m68k/m68k.c (m68k_attribute_table): Likewise. + * config/v850/v850.c (v850_handle_interrupt_attribute, + v850_handle_data_area_attribute): Formatting fixes. + (v850_attribute_table): Swap affects_type_identity and handler + fields, adjust comments. + * config/m32r/m32r.c (m32r_attribute_table): Likewise. + * config/arm/arm.c (arm_attribute_table): Likewise. + * config/avr/avr.c (avr_attribute_table): Likewise. + * config/s390/s390.c (s390_attribute_table): Likewise. + * config/sh/sh.c (sh_attribute_table): Likewise. + * config/i386/i386.c (ix86_handle_cconv_attribute, + ix86_handle_callee_pop_aggregate_return): Formatting fixes. + (ix86_attribute_table): Swap affects_type_identity and handler + fields, adjust comments. + * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise. + * config/sparc/sparc.c (sparc_attribute_table): Likewise. + * config/m32c/m32c.c (m32c_attribute_table): Likewise. + * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise. + * config/ia64/ia64.c (ia64_attribute_table): Likewise. + * config/msp430/msp430.c (msp430_attribute_table): Likewise. + * config/rx/rx.c (rx_attribute_table): Likewise. + * config/cr16/cr16.c (cr16_attribute_table): Likewise. + * config/h8300/h8300.c (h8300_attribute_table): Likewise. + * config/nvptx/nvptx.c (nvptx_attribute_table): Likewise. + * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise. + * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise. + * config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise. + * config/bfin/bfin.c (bfin_attribute_table): Likewise. + * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise. + * config/rl78/rl78.c (rl78_attribute_table): Likewise. + * config/nds32/nds32.c (nds32_attribute_table): Likewise. + * doc/plugins.texi (user_attr): Likewise. Add NULL for + exclude. + * attribs.c (empty_attribute_table): Swap affects_type_identity and + handler fields. + (register_scoped_attributes, decl_attributes): Formatting fixes. + PR tree-optimization/83269 * fold-const.c (fold_binary_loc): Perform (-A) - B -> (-B) - A subtraction in arg0's type if type is signed and arg0 is unsigned. diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index fb3e7f48218..e414acdb885 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2017-12-15 Jakub Jelinek + + * gcc-interface/utils.c (gnat_internal_attribute_table): Swap + affects_type_identity and handler fields, adjust comments. + 2017-12-15 Eric Botcazou * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use Component_Size of diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c index eae23d281b0..a094ac78d6f 100644 --- a/gcc/ada/gcc-interface/utils.c +++ b/gcc/ada/gcc-interface/utils.c @@ -107,50 +107,50 @@ static tree fake_attribute_handler (tree *, tree, tree, int, bool *); this minimal set of attributes to accommodate the needs of builtins. */ const struct attribute_spec gnat_internal_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "const", 0, 0, true, false, false, handle_const_attribute, - false, NULL }, - { "nothrow", 0, 0, true, false, false, handle_nothrow_attribute, - false, NULL }, - { "pure", 0, 0, true, false, false, handle_pure_attribute, - false, NULL }, - { "no vops", 0, 0, true, false, false, handle_novops_attribute, - false, NULL }, - { "nonnull", 0, -1, false, true, true, handle_nonnull_attribute, - false, NULL }, - { "sentinel", 0, 1, false, true, true, handle_sentinel_attribute, - false, NULL }, - { "noreturn", 0, 0, true, false, false, handle_noreturn_attribute, - false, NULL }, - { "noinline", 0, 0, true, false, false, handle_noinline_attribute, - false, NULL }, - { "noclone", 0, 0, true, false, false, handle_noclone_attribute, - false, NULL }, - { "leaf", 0, 0, true, false, false, handle_leaf_attribute, - false, NULL }, - { "always_inline",0, 0, true, false, false, handle_always_inline_attribute, - false, NULL }, - { "malloc", 0, 0, true, false, false, handle_malloc_attribute, - false, NULL }, - { "type generic", 0, 0, false, true, true, handle_type_generic_attribute, - false, NULL }, - - { "vector_size", 1, 1, false, true, false, handle_vector_size_attribute, - false, NULL }, - { "vector_type", 0, 0, false, true, false, handle_vector_type_attribute, - false, NULL }, - { "may_alias", 0, 0, false, true, false, NULL, false, NULL }, + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "const", 0, 0, true, false, false, false, + handle_const_attribute, NULL }, + { "nothrow", 0, 0, true, false, false, false, + handle_nothrow_attribute, NULL }, + { "pure", 0, 0, true, false, false, false, + handle_pure_attribute, NULL }, + { "no vops", 0, 0, true, false, false, false, + handle_novops_attribute, NULL }, + { "nonnull", 0, -1, false, true, true, false, + handle_nonnull_attribute, NULL }, + { "sentinel", 0, 1, false, true, true, false, + handle_sentinel_attribute, NULL }, + { "noreturn", 0, 0, true, false, false, false, + handle_noreturn_attribute, NULL }, + { "noinline", 0, 0, true, false, false, false, + handle_noinline_attribute, NULL }, + { "noclone", 0, 0, true, false, false, false, + handle_noclone_attribute, NULL }, + { "leaf", 0, 0, true, false, false, false, + handle_leaf_attribute, NULL }, + { "always_inline",0, 0, true, false, false, false, + handle_always_inline_attribute, NULL }, + { "malloc", 0, 0, true, false, false, false, + handle_malloc_attribute, NULL }, + { "type generic", 0, 0, false, true, true, false, + handle_type_generic_attribute, NULL }, + + { "vector_size", 1, 1, false, true, false, false, + handle_vector_size_attribute, NULL }, + { "vector_type", 0, 0, false, true, false, false, + handle_vector_type_attribute, NULL }, + { "may_alias", 0, 0, false, true, false, false, NULL, NULL }, /* ??? format and format_arg are heavy and not supported, which actually prevents support for stdio builtins, which we however declare as part of the common builtins.def contents. */ - { "format", 3, 3, false, true, true, fake_attribute_handler, false, + { "format", 3, 3, false, true, true, false, fake_attribute_handler, NULL }, - { "format_arg", 1, 1, false, true, true, fake_attribute_handler, false, + { "format_arg", 1, 1, false, true, true, false, fake_attribute_handler, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Associates a GNAT tree node to a GCC tree node. It is used in diff --git a/gcc/attribs.c b/gcc/attribs.c index f65fd15814f..b7a7509171a 100644 --- a/gcc/attribs.c +++ b/gcc/attribs.c @@ -96,7 +96,7 @@ static bool attributes_initialized = false; static const struct attribute_spec empty_attribute_table[] = { - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Return base name of the attribute. Ie '__attr__' is turned into 'attr'. @@ -118,9 +118,9 @@ extract_attribute_substring (struct substring *str) namespace. The function returns the namespace into which the attributes have been registered. */ -scoped_attributes* -register_scoped_attributes (const struct attribute_spec * attributes, - const char* ns) +scoped_attributes * +register_scoped_attributes (const struct attribute_spec *attributes, + const char *ns) { scoped_attributes *result = NULL; @@ -535,8 +535,8 @@ decl_attributes (tree *node, tree attributes, int flags, tree name = get_attribute_name (a); tree args = TREE_VALUE (a); tree *anode = node; - const struct attribute_spec *spec = - lookup_scoped_attribute_spec (ns, name); + const struct attribute_spec *spec + = lookup_scoped_attribute_spec (ns, name); int fn_ptr_quals = 0; tree fn_ptr_tmp = NULL_TREE; diff --git a/gcc/brig/ChangeLog b/gcc/brig/ChangeLog index 86c70d86f28..0bb552e41cb 100644 --- a/gcc/brig/ChangeLog +++ b/gcc/brig/ChangeLog @@ -1,3 +1,8 @@ +2017-12-15 Jakub Jelinek + + * brig-lang.c (brig_attribute_table): Swap affects_type_identity + and handler fields, adjust comments. + 2017-12-08 Jakub Jelinek * brig-lang.c (brig_attribute_table): Fix up comment. diff --git a/gcc/brig/brig-lang.c b/gcc/brig/brig-lang.c index eea36a3c453..01908f42bb3 100644 --- a/gcc/brig/brig-lang.c +++ b/gcc/brig/brig-lang.c @@ -447,19 +447,19 @@ brig_localize_identifier (const char *ident) /* Table of machine-independent attributes supported in GIMPLE. */ const struct attribute_spec brig_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "leaf", 0, 0, true, false, false, - handle_leaf_attribute, false, NULL }, - { "const", 0, 0, true, false, false, - handle_const_attribute, false, NULL }, - { "pure", 0, 0, true, false, false, - handle_pure_attribute, false, NULL }, - { "nothrow", 0, 0, true, false, false, - handle_nothrow_attribute, false, NULL }, - { "returns_twice", 0, 0, true, false, false, - handle_returns_twice_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "leaf", 0, 0, true, false, false, false, + handle_leaf_attribute, NULL }, + { "const", 0, 0, true, false, false, false, + handle_const_attribute, NULL }, + { "pure", 0, 0, true, false, false, false, + handle_pure_attribute, NULL }, + { "nothrow", 0, 0, true, false, false, false, + handle_nothrow_attribute, NULL }, + { "returns_twice", 0, 0, true, false, false, false, + handle_returns_twice_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Attribute handlers. */ diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 9f87d008382..e5343680a22 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2017-12-15 Jakub Jelinek + + * c-attribs.c (c_common_attribute_table, + c_common_format_attribute_table): Swap affects_type_identity + and handler fields, adjust comments. + 2017-12-14 Bernd Edlinger * c.opt (Wcast-function-type): New warning option. diff --git a/gcc/c-family/c-attribs.c b/gcc/c-family/c-attribs.c index 186df05eec5..2625f87d19d 100644 --- a/gcc/c-family/c-attribs.c +++ b/gcc/c-family/c-attribs.c @@ -245,236 +245,229 @@ static const struct attribute_spec::exclusions attr_const_pure_exclusions[] = Current list of processed common attributes: nonnull. */ const struct attribute_spec c_common_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity } */ - { "packed", 0, 0, false, false, false, - handle_packed_attribute, false, + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "packed", 0, 0, false, false, false, false, + handle_packed_attribute, attr_aligned_exclusions }, - { "nocommon", 0, 0, true, false, false, - handle_nocommon_attribute, false, + { "nocommon", 0, 0, true, false, false, false, + handle_nocommon_attribute, attr_common_exclusions }, - { "common", 0, 0, true, false, false, - handle_common_attribute, false, + { "common", 0, 0, true, false, false, false, + handle_common_attribute, attr_common_exclusions }, /* FIXME: logically, noreturn attributes should be listed as "false, true, true" and apply to function types. But implementing this would require all the places in the compiler that use TREE_THIS_VOLATILE on a decl to identify non-returning functions to be located and fixed to check the function type instead. */ - { "noreturn", 0, 0, true, false, false, - handle_noreturn_attribute, false, + { "noreturn", 0, 0, true, false, false, false, + handle_noreturn_attribute, attr_noreturn_exclusions }, - { "volatile", 0, 0, true, false, false, - handle_noreturn_attribute, false, NULL }, - { "stack_protect", 0, 0, true, false, false, - handle_stack_protect_attribute, false, NULL }, - { "noinline", 0, 0, true, false, false, - handle_noinline_attribute, false, + { "volatile", 0, 0, true, false, false, false, + handle_noreturn_attribute, NULL }, + { "stack_protect", 0, 0, true, false, false, false, + handle_stack_protect_attribute, NULL }, + { "noinline", 0, 0, true, false, false, false, + handle_noinline_attribute, attr_noinline_exclusions }, - { "noclone", 0, 0, true, false, false, - handle_noclone_attribute, false, NULL }, - { "no_icf", 0, 0, true, false, false, - handle_noicf_attribute, false, NULL }, - { "noipa", 0, 0, true, false, false, - handle_noipa_attribute, false, NULL }, - { "leaf", 0, 0, true, false, false, - handle_leaf_attribute, false, NULL }, - { "always_inline", 0, 0, true, false, false, - handle_always_inline_attribute, false, + { "noclone", 0, 0, true, false, false, false, + handle_noclone_attribute, NULL }, + { "no_icf", 0, 0, true, false, false, false, + handle_noicf_attribute, NULL }, + { "noipa", 0, 0, true, false, false, false, + handle_noipa_attribute, NULL }, + { "leaf", 0, 0, true, false, false, false, + handle_leaf_attribute, NULL }, + { "always_inline", 0, 0, true, false, false, false, + handle_always_inline_attribute, attr_inline_exclusions }, - { "gnu_inline", 0, 0, true, false, false, - handle_gnu_inline_attribute, false, + { "gnu_inline", 0, 0, true, false, false, false, + handle_gnu_inline_attribute, attr_inline_exclusions }, - { "artificial", 0, 0, true, false, false, - handle_artificial_attribute, false, NULL }, - { "flatten", 0, 0, true, false, false, - handle_flatten_attribute, false, NULL }, - { "used", 0, 0, true, false, false, - handle_used_attribute, false, NULL }, - { "unused", 0, 0, false, false, false, - handle_unused_attribute, false, NULL }, - { "externally_visible", 0, 0, true, false, false, - handle_externally_visible_attribute, false, NULL }, - { "no_reorder", 0, 0, true, false, false, - handle_no_reorder_attribute, false, NULL }, + { "artificial", 0, 0, true, false, false, false, + handle_artificial_attribute, NULL }, + { "flatten", 0, 0, true, false, false, false, + handle_flatten_attribute, NULL }, + { "used", 0, 0, true, false, false, false, + handle_used_attribute, NULL }, + { "unused", 0, 0, false, false, false, false, + handle_unused_attribute, NULL }, + { "externally_visible", 0, 0, true, false, false, false, + handle_externally_visible_attribute, NULL }, + { "no_reorder", 0, 0, true, false, false, false, + handle_no_reorder_attribute, NULL }, /* The same comments as for noreturn attributes apply to const ones. */ - { "const", 0, 0, true, false, false, - handle_const_attribute, false, + { "const", 0, 0, true, false, false, false, + handle_const_attribute, attr_const_pure_exclusions }, - { "scalar_storage_order", 1, 1, false, false, false, - handle_scalar_storage_order_attribute, false, NULL }, - { "transparent_union", 0, 0, false, false, false, - handle_transparent_union_attribute, false, NULL }, - { "constructor", 0, 1, true, false, false, - handle_constructor_attribute, false, NULL }, - { "destructor", 0, 1, true, false, false, - handle_destructor_attribute, false, NULL }, - { "mode", 1, 1, false, true, false, - handle_mode_attribute, false, NULL }, - { "section", 1, 1, true, false, false, - handle_section_attribute, false, NULL }, - { "aligned", 0, 1, false, false, false, - handle_aligned_attribute, false, + { "scalar_storage_order", 1, 1, false, false, false, false, + handle_scalar_storage_order_attribute, NULL }, + { "transparent_union", 0, 0, false, false, false, false, + handle_transparent_union_attribute, NULL }, + { "constructor", 0, 1, true, false, false, false, + handle_constructor_attribute, NULL }, + { "destructor", 0, 1, true, false, false, false, + handle_destructor_attribute, NULL }, + { "mode", 1, 1, false, true, false, false, + handle_mode_attribute, NULL }, + { "section", 1, 1, true, false, false, false, + handle_section_attribute, NULL }, + { "aligned", 0, 1, false, false, false, false, + handle_aligned_attribute, attr_aligned_exclusions }, - { "warn_if_not_aligned", 0, 1, false, false, false, - handle_warn_if_not_aligned_attribute, - false, NULL }, - { "weak", 0, 0, true, false, false, - handle_weak_attribute, false, NULL }, - { "noplt", 0, 0, true, false, false, - handle_noplt_attribute, false, NULL }, - { "ifunc", 1, 1, true, false, false, - handle_ifunc_attribute, false, NULL }, - { "alias", 1, 1, true, false, false, - handle_alias_attribute, false, NULL }, - { "weakref", 0, 1, true, false, false, - handle_weakref_attribute, false, NULL }, - { "no_instrument_function", 0, 0, true, false, false, + { "warn_if_not_aligned", 0, 1, false, false, false, false, + handle_warn_if_not_aligned_attribute, NULL }, + { "weak", 0, 0, true, false, false, false, + handle_weak_attribute, NULL }, + { "noplt", 0, 0, true, false, false, false, + handle_noplt_attribute, NULL }, + { "ifunc", 1, 1, true, false, false, false, + handle_ifunc_attribute, NULL }, + { "alias", 1, 1, true, false, false, false, + handle_alias_attribute, NULL }, + { "weakref", 0, 1, true, false, false, false, + handle_weakref_attribute, NULL }, + { "no_instrument_function", 0, 0, true, false, false, false, handle_no_instrument_function_attribute, - false, NULL }, - { "no_profile_instrument_function", 0, 0, true, false, false, + NULL }, + { "no_profile_instrument_function", 0, 0, true, false, false, false, handle_no_profile_instrument_function_attribute, - false, NULL }, - { "malloc", 0, 0, true, false, false, - handle_malloc_attribute, false, - attr_alloc_exclusions }, - { "returns_twice", 0, 0, true, false, false, - handle_returns_twice_attribute, false, + NULL }, + { "malloc", 0, 0, true, false, false, false, + handle_malloc_attribute, attr_alloc_exclusions }, + { "returns_twice", 0, 0, true, false, false, false, + handle_returns_twice_attribute, attr_returns_twice_exclusions }, - { "no_stack_limit", 0, 0, true, false, false, - handle_no_limit_stack_attribute, false, NULL }, - { "pure", 0, 0, true, false, false, - handle_pure_attribute, false, + { "no_stack_limit", 0, 0, true, false, false, false, + handle_no_limit_stack_attribute, NULL }, + { "pure", 0, 0, true, false, false, false, + handle_pure_attribute, attr_const_pure_exclusions }, - { "transaction_callable", 0, 0, false, true, false, - handle_tm_attribute, false, NULL }, - { "transaction_unsafe", 0, 0, false, true, false, - handle_tm_attribute, true, NULL }, - { "transaction_safe", 0, 0, false, true, false, - handle_tm_attribute, true, NULL }, - { "transaction_safe_dynamic", 0, 0, true, false, false, - handle_tm_attribute, false, NULL }, - { "transaction_may_cancel_outer", 0, 0, false, true, false, - handle_tm_attribute, false, NULL }, + { "transaction_callable", 0, 0, false, true, false, false, + handle_tm_attribute, NULL }, + { "transaction_unsafe", 0, 0, false, true, false, true, + handle_tm_attribute, NULL }, + { "transaction_safe", 0, 0, false, true, false, true, + handle_tm_attribute, NULL }, + { "transaction_safe_dynamic", 0, 0, true, false, false, false, + handle_tm_attribute, NULL }, + { "transaction_may_cancel_outer", 0, 0, false, true, false, false, + handle_tm_attribute, NULL }, /* ??? These two attributes didn't make the transition from the Intel language document to the multi-vendor language document. */ - { "transaction_pure", 0, 0, false, true, false, - handle_tm_attribute, false, NULL }, - { "transaction_wrap", 1, 1, true, false, false, - handle_tm_wrap_attribute, false, NULL }, + { "transaction_pure", 0, 0, false, true, false, false, + handle_tm_attribute, NULL }, + { "transaction_wrap", 1, 1, true, false, false, false, + handle_tm_wrap_attribute, NULL }, /* For internal use (marking of builtins) only. The name contains space to prevent its usage in source code. */ - { "no vops", 0, 0, true, false, false, - handle_novops_attribute, false, NULL }, - { "deprecated", 0, 1, false, false, false, - handle_deprecated_attribute, false, NULL }, - { "vector_size", 1, 1, false, true, false, - handle_vector_size_attribute, true, NULL }, - { "visibility", 1, 1, false, false, false, - handle_visibility_attribute, false, NULL }, - { "tls_model", 1, 1, true, false, false, - handle_tls_model_attribute, false, NULL }, - { "nonnull", 0, -1, false, true, true, - handle_nonnull_attribute, false, NULL }, - { "nonstring", 0, 0, true, false, false, - handle_nonstring_attribute, false, NULL }, - { "nothrow", 0, 0, true, false, false, - handle_nothrow_attribute, false, NULL }, - { "may_alias", 0, 0, false, true, false, NULL, false, NULL }, - { "cleanup", 1, 1, true, false, false, - handle_cleanup_attribute, false, NULL }, - { "warn_unused_result", 0, 0, false, true, true, - handle_warn_unused_result_attribute, false, + { "no vops", 0, 0, true, false, false, false, + handle_novops_attribute, NULL }, + { "deprecated", 0, 1, false, false, false, false, + handle_deprecated_attribute, NULL }, + { "vector_size", 1, 1, false, true, false, true, + handle_vector_size_attribute, NULL }, + { "visibility", 1, 1, false, false, false, false, + handle_visibility_attribute, NULL }, + { "tls_model", 1, 1, true, false, false, false, + handle_tls_model_attribute, NULL }, + { "nonnull", 0, -1, false, true, true, false, + handle_nonnull_attribute, NULL }, + { "nonstring", 0, 0, true, false, false, false, + handle_nonstring_attribute, NULL }, + { "nothrow", 0, 0, true, false, false, false, + handle_nothrow_attribute, NULL }, + { "may_alias", 0, 0, false, true, false, false, NULL, NULL }, + { "cleanup", 1, 1, true, false, false, false, + handle_cleanup_attribute, NULL }, + { "warn_unused_result", 0, 0, false, true, true, false, + handle_warn_unused_result_attribute, attr_warn_unused_result_exclusions }, - { "sentinel", 0, 1, false, true, true, - handle_sentinel_attribute, false, NULL }, + { "sentinel", 0, 1, false, true, true, false, + handle_sentinel_attribute, NULL }, /* For internal use (marking of builtins) only. The name contains space to prevent its usage in source code. */ - { "type generic", 0, 0, false, true, true, - handle_type_generic_attribute, false, NULL }, - { "alloc_size", 1, 2, false, true, true, - handle_alloc_size_attribute, false, + { "type generic", 0, 0, false, true, true, false, + handle_type_generic_attribute, NULL }, + { "alloc_size", 1, 2, false, true, true, false, + handle_alloc_size_attribute, attr_alloc_exclusions }, - { "cold", 0, 0, true, false, false, - handle_cold_attribute, false, + { "cold", 0, 0, true, false, false, false, + handle_cold_attribute, attr_cold_hot_exclusions }, - { "hot", 0, 0, true, false, false, - handle_hot_attribute, false, + { "hot", 0, 0, true, false, false, false, + handle_hot_attribute, attr_cold_hot_exclusions }, { "no_address_safety_analysis", - 0, 0, true, false, false, + 0, 0, true, false, false, false, handle_no_address_safety_analysis_attribute, - false, NULL }, - { "no_sanitize", 1, 1, true, false, false, - handle_no_sanitize_attribute, - false, NULL }, - { "no_sanitize_address", 0, 0, true, false, false, - handle_no_sanitize_address_attribute, - false, NULL }, - { "no_sanitize_thread", 0, 0, true, false, false, - handle_no_sanitize_thread_attribute, - false, NULL }, - { "no_sanitize_undefined", 0, 0, true, false, false, - handle_no_sanitize_undefined_attribute, - false, NULL }, - { "asan odr indicator", 0, 0, true, false, false, - handle_asan_odr_indicator_attribute, - false, NULL }, - { "warning", 1, 1, true, false, false, - handle_error_attribute, false, NULL }, - { "error", 1, 1, true, false, false, - handle_error_attribute, false, NULL }, - { "target", 1, -1, true, false, false, - handle_target_attribute, false, NULL }, - { "target_clones", 1, -1, true, false, false, - handle_target_clones_attribute, false, NULL }, - { "optimize", 1, -1, true, false, false, - handle_optimize_attribute, false, NULL }, + NULL }, + { "no_sanitize", 1, 1, true, false, false, false, + handle_no_sanitize_attribute, NULL }, + { "no_sanitize_address", 0, 0, true, false, false, false, + handle_no_sanitize_address_attribute, NULL }, + { "no_sanitize_thread", 0, 0, true, false, false, false, + handle_no_sanitize_thread_attribute, NULL }, + { "no_sanitize_undefined", 0, 0, true, false, false, false, + handle_no_sanitize_undefined_attribute, NULL }, + { "asan odr indicator", 0, 0, true, false, false, false, + handle_asan_odr_indicator_attribute, NULL }, + { "warning", 1, 1, true, false, false, false, + handle_error_attribute, NULL }, + { "error", 1, 1, true, false, false, false, + handle_error_attribute, NULL }, + { "target", 1, -1, true, false, false, false, + handle_target_attribute, NULL }, + { "target_clones", 1, -1, true, false, false, false, + handle_target_clones_attribute, NULL }, + { "optimize", 1, -1, true, false, false, false, + handle_optimize_attribute, NULL }, /* For internal use only. The leading '*' both prevents its usage in source code and signals that it may be overridden by machine tables. */ - { "*tm regparm", 0, 0, false, true, true, - ignore_attribute, false, NULL }, - { "no_split_stack", 0, 0, true, false, false, - handle_no_split_stack_attribute, false, NULL }, + { "*tm regparm", 0, 0, false, true, true, false, + ignore_attribute, NULL }, + { "no_split_stack", 0, 0, true, false, false, false, + handle_no_split_stack_attribute, NULL }, /* For internal use (marking of builtins and runtime functions) only. The name contains space to prevent its usage in source code. */ - { "fn spec", 1, 1, false, true, true, - handle_fnspec_attribute, false, NULL }, - { "warn_unused", 0, 0, false, false, false, - handle_warn_unused_attribute, false, NULL }, - { "returns_nonnull", 0, 0, false, true, true, - handle_returns_nonnull_attribute, false, NULL }, - { "omp declare simd", 0, -1, true, false, false, - handle_omp_declare_simd_attribute, false, NULL }, - { "cilk simd function", 0, -1, true, false, false, - handle_omp_declare_simd_attribute, false, NULL }, - { "simd", 0, 1, true, false, false, - handle_simd_attribute, false, NULL }, - { "omp declare target", 0, 0, true, false, false, - handle_omp_declare_target_attribute, false, NULL }, - { "omp declare target link", 0, 0, true, false, false, - handle_omp_declare_target_attribute, false, NULL }, - { "alloc_align", 1, 1, false, true, true, - handle_alloc_align_attribute, false, + { "fn spec", 1, 1, false, true, true, false, + handle_fnspec_attribute, NULL }, + { "warn_unused", 0, 0, false, false, false, false, + handle_warn_unused_attribute, NULL }, + { "returns_nonnull", 0, 0, false, true, true, false, + handle_returns_nonnull_attribute, NULL }, + { "omp declare simd", 0, -1, true, false, false, false, + handle_omp_declare_simd_attribute, NULL }, + { "cilk simd function", 0, -1, true, false, false, false, + handle_omp_declare_simd_attribute, NULL }, + { "simd", 0, 1, true, false, false, false, + handle_simd_attribute, NULL }, + { "omp declare target", 0, 0, true, false, false, false, + handle_omp_declare_target_attribute, NULL }, + { "omp declare target link", 0, 0, true, false, false, false, + handle_omp_declare_target_attribute, NULL }, + { "alloc_align", 1, 1, false, true, true, false, + handle_alloc_align_attribute, attr_alloc_exclusions }, - { "assume_aligned", 1, 2, false, true, true, - handle_assume_aligned_attribute, false, NULL }, - { "designated_init", 0, 0, false, true, false, - handle_designated_init_attribute, false, NULL }, - { "bnd_variable_size", 0, 0, true, false, false, - handle_bnd_variable_size_attribute, false, NULL }, - { "bnd_legacy", 0, 0, true, false, false, - handle_bnd_legacy, false, NULL }, - { "bnd_instrument", 0, 0, true, false, false, - handle_bnd_instrument, false, NULL }, - { "fallthrough", 0, 0, false, false, false, - handle_fallthrough_attribute, false, NULL }, - { "patchable_function_entry", 1, 2, true, false, false, + { "assume_aligned", 1, 2, false, true, true, false, + handle_assume_aligned_attribute, NULL }, + { "designated_init", 0, 0, false, true, false, false, + handle_designated_init_attribute, NULL }, + { "bnd_variable_size", 0, 0, true, false, false, false, + handle_bnd_variable_size_attribute, NULL }, + { "bnd_legacy", 0, 0, true, false, false, false, + handle_bnd_legacy, NULL }, + { "bnd_instrument", 0, 0, true, false, false, false, + handle_bnd_instrument, NULL }, + { "fallthrough", 0, 0, false, false, false, false, + handle_fallthrough_attribute, NULL }, + { "patchable_function_entry", 1, 2, true, false, false, false, handle_patchable_function_entry_attribute, - false, NULL }, - { "nocf_check", 0, 0, false, true, true, - handle_nocf_check_attribute, true, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + NULL }, + { "nocf_check", 0, 0, false, true, true, true, + handle_nocf_check_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Give the specifications for the format attributes, used by C and all @@ -486,13 +479,13 @@ const struct attribute_spec c_common_attribute_table[] = Current list of processed format attributes: format, format_arg. */ const struct attribute_spec c_common_format_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity } */ - { "format", 3, 3, false, true, true, - handle_format_attribute, false, NULL }, - { "format_arg", 1, 1, false, true, true, - handle_format_arg_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "format", 3, 3, false, true, true, false, + handle_format_attribute, NULL }, + { "format_arg", 1, 1, false, true, true, false, + handle_format_arg_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Returns TRUE iff the attribute indicated by ATTR_ID takes a plain diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index edf9cb4af59..63821fc6235 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -7505,11 +7505,11 @@ common_object_handler (tree *node, tree name ATTRIBUTE_UNUSED, static const struct attribute_spec vms_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { COMMON_OBJECT, 0, 1, true, false, false, common_object_handler, false, + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { COMMON_OBJECT, 0, 1, true, false, false, false, common_object_handler, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; void diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index 9974a1f999b..3fc867f09c4 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -217,25 +217,25 @@ static tree arc_handle_fndecl_attribute (tree *, tree, tree, int, bool *); machine specific supported attributes. */ const struct attribute_spec arc_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "interrupt", 1, 1, true, false, false, arc_handle_interrupt_attribute, - true, NULL }, + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "interrupt", 1, 1, true, false, false, true, + arc_handle_interrupt_attribute, NULL }, /* Function calls made to this symbol must be done indirectly, because it may lie outside of the 21/25 bit addressing range of a normal function call. */ - { "long_call", 0, 0, false, true, true, NULL, false, NULL }, + { "long_call", 0, 0, false, true, true, false, NULL, NULL }, /* Whereas these functions are always known to reside within the 25 bit addressing range of unconditionalized bl. */ - { "medium_call", 0, 0, false, true, true, NULL, false, NULL }, + { "medium_call", 0, 0, false, true, true, false, NULL, NULL }, /* And these functions are always known to reside within the 21 bit addressing range of blcc. */ - { "short_call", 0, 0, false, true, true, NULL, false, NULL }, + { "short_call", 0, 0, false, true, true, false, NULL, NULL }, /* Function which are not having the prologue and epilogue generated by the compiler. */ - { "naked", 0, 0, true, false, false, arc_handle_fndecl_attribute, false, + { "naked", 0, 0, true, false, false, false, arc_handle_fndecl_attribute, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; static int arc_comp_type_attributes (const_tree, const_tree); static void arc_file_start (void); diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 9b29a0a154e..1b2bcc3f74f 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -322,25 +322,25 @@ static HOST_WIDE_INT arm_constant_alignment (const_tree, HOST_WIDE_INT); /* Table of machine attributes. */ static const struct attribute_spec arm_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ /* Function calls made to this symbol must be done indirectly, because it may lie outside of the 26 bit addressing range of a normal function call. */ - { "long_call", 0, 0, false, true, true, NULL, false, NULL }, + { "long_call", 0, 0, false, true, true, false, NULL, NULL }, /* Whereas these functions are always known to reside within the 26 bit addressing range. */ - { "short_call", 0, 0, false, true, true, NULL, false, NULL }, + { "short_call", 0, 0, false, true, true, false, NULL, NULL }, /* Specify the procedure call conventions for a function. */ - { "pcs", 1, 1, false, true, true, arm_handle_pcs_attribute, - false, NULL }, + { "pcs", 1, 1, false, true, true, false, arm_handle_pcs_attribute, + NULL }, /* Interrupt Service Routines have special prologue and epilogue requirements. */ - { "isr", 0, 1, false, false, false, arm_handle_isr_attribute, - false, NULL }, - { "interrupt", 0, 1, false, false, false, arm_handle_isr_attribute, - false, NULL }, - { "naked", 0, 0, true, false, false, arm_handle_fndecl_attribute, - false, NULL }, + { "isr", 0, 1, false, false, false, false, arm_handle_isr_attribute, + NULL }, + { "interrupt", 0, 1, false, false, false, false, arm_handle_isr_attribute, + NULL }, + { "naked", 0, 0, true, false, false, false, + arm_handle_fndecl_attribute, NULL }, #ifdef ARM_PE /* ARM/PE has three new attributes: interfacearm - ? @@ -351,24 +351,24 @@ static const struct attribute_spec arm_attribute_table[] = them with spaces. We do NOT support this. Instead, use __declspec multiple times. */ - { "dllimport", 0, 0, true, false, false, NULL, false, NULL }, - { "dllexport", 0, 0, true, false, false, NULL, false, NULL }, - { "interfacearm", 0, 0, true, false, false, arm_handle_fndecl_attribute, - false, NULL }, + { "dllimport", 0, 0, true, false, false, false, NULL, NULL }, + { "dllexport", 0, 0, true, false, false, false, NULL, NULL }, + { "interfacearm", 0, 0, true, false, false, false, + arm_handle_fndecl_attribute, NULL }, #elif TARGET_DLLIMPORT_DECL_ATTRIBUTES - { "dllimport", 0, 0, false, false, false, handle_dll_attribute, false, + { "dllimport", 0, 0, false, false, false, false, handle_dll_attribute, NULL }, - { "dllexport", 0, 0, false, false, false, handle_dll_attribute, false, + { "dllexport", 0, 0, false, false, false, false, handle_dll_attribute, NULL }, - { "notshared", 0, 0, false, true, false, arm_handle_notshared_attribute, - false, NULL }, + { "notshared", 0, 0, false, true, false, false, + arm_handle_notshared_attribute, NULL }, #endif /* ARMv8-M Security Extensions support. */ - { "cmse_nonsecure_entry", 0, 0, true, false, false, - arm_handle_cmse_nonsecure_entry, false, NULL }, - { "cmse_nonsecure_call", 0, 0, true, false, false, - arm_handle_cmse_nonsecure_call, true, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { "cmse_nonsecure_entry", 0, 0, true, false, false, false, + arm_handle_cmse_nonsecure_entry, NULL }, + { "cmse_nonsecure_call", 0, 0, true, false, false, true, + arm_handle_cmse_nonsecure_call, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Initialize the GCC target structure. */ diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index fdae1469d41..39decb820c2 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -9871,34 +9871,33 @@ avr_eval_addr_attrib (rtx x) /* AVR attributes. */ -static const struct attribute_spec -avr_attribute_table[] = -{ - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "progmem", 0, 0, false, false, false, avr_handle_progmem_attribute, - false, NULL }, - { "signal", 0, 0, true, false, false, avr_handle_fndecl_attribute, - false, NULL }, - { "interrupt", 0, 0, true, false, false, avr_handle_fndecl_attribute, - false, NULL }, - { "no_gccisr", 0, 0, true, false, false, avr_handle_fndecl_attribute, - false, NULL }, - { "naked", 0, 0, false, true, true, avr_handle_fntype_attribute, - false, NULL }, - { "OS_task", 0, 0, false, true, true, avr_handle_fntype_attribute, - false, NULL }, - { "OS_main", 0, 0, false, true, true, avr_handle_fntype_attribute, - false, NULL }, - { "io", 0, 1, true, false, false, avr_handle_addr_attribute, - false, NULL }, - { "io_low", 0, 1, true, false, false, avr_handle_addr_attribute, - false, NULL }, - { "address", 1, 1, true, false, false, avr_handle_addr_attribute, - false, NULL }, - { "absdata", 0, 0, true, false, false, avr_handle_absdata_attribute, - false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } +static const struct attribute_spec avr_attribute_table[] = +{ + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "progmem", 0, 0, false, false, false, false, + avr_handle_progmem_attribute, NULL }, + { "signal", 0, 0, true, false, false, false, + avr_handle_fndecl_attribute, NULL }, + { "interrupt", 0, 0, true, false, false, false, + avr_handle_fndecl_attribute, NULL }, + { "no_gccisr", 0, 0, true, false, false, false, + avr_handle_fndecl_attribute, NULL }, + { "naked", 0, 0, false, true, true, false, + avr_handle_fntype_attribute, NULL }, + { "OS_task", 0, 0, false, true, true, false, + avr_handle_fntype_attribute, NULL }, + { "OS_main", 0, 0, false, true, true, false, + avr_handle_fntype_attribute, NULL }, + { "io", 0, 1, true, false, false, false, + avr_handle_addr_attribute, NULL }, + { "io_low", 0, 1, true, false, false, false, + avr_handle_addr_attribute, NULL }, + { "address", 1, 1, true, false, false, false, + avr_handle_addr_attribute, NULL }, + { "absdata", 0, 0, true, false, false, false, + avr_handle_absdata_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c index a5947435f3e..96ef232f085 100644 --- a/gcc/config/bfin/bfin.c +++ b/gcc/config/bfin/bfin.c @@ -4905,31 +4905,31 @@ bfin_handle_l2_attribute (tree *node, tree ARG_UNUSED (name), /* Table of valid machine attributes. */ static const struct attribute_spec bfin_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "interrupt_handler", 0, 0, false, true, true, handle_int_attribute, - false, NULL }, - { "exception_handler", 0, 0, false, true, true, handle_int_attribute, - false, NULL }, - { "nmi_handler", 0, 0, false, true, true, handle_int_attribute, false, + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "interrupt_handler", 0, 0, false, true, true, false, + handle_int_attribute, NULL }, + { "exception_handler", 0, 0, false, true, true, false, + handle_int_attribute, NULL }, + { "nmi_handler", 0, 0, false, true, true, false, handle_int_attribute, NULL }, - { "nesting", 0, 0, false, true, true, NULL, false, NULL }, - { "kspisusp", 0, 0, false, true, true, NULL, false, NULL }, - { "saveall", 0, 0, false, true, true, NULL, false, NULL }, - { "longcall", 0, 0, false, true, true, bfin_handle_longcall_attribute, - false, NULL }, - { "shortcall", 0, 0, false, true, true, bfin_handle_longcall_attribute, - false, NULL }, - { "l1_text", 0, 0, true, false, false, bfin_handle_l1_text_attribute, - false, NULL }, - { "l1_data", 0, 0, true, false, false, bfin_handle_l1_data_attribute, - false, NULL }, - { "l1_data_A", 0, 0, true, false, false, bfin_handle_l1_data_attribute, - false, NULL }, - { "l1_data_B", 0, 0, true, false, false, bfin_handle_l1_data_attribute, - false, NULL }, - { "l2", 0, 0, true, false, false, bfin_handle_l2_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { "nesting", 0, 0, false, true, true, false, NULL, NULL }, + { "kspisusp", 0, 0, false, true, true, false, NULL, NULL }, + { "saveall", 0, 0, false, true, true, false, NULL, NULL }, + { "longcall", 0, 0, false, true, true, false, + bfin_handle_longcall_attribute, NULL }, + { "shortcall", 0, 0, false, true, true, false, + bfin_handle_longcall_attribute, NULL }, + { "l1_text", 0, 0, true, false, false, false, + bfin_handle_l1_text_attribute, NULL }, + { "l1_data", 0, 0, true, false, false, false, + bfin_handle_l1_data_attribute, NULL }, + { "l1_data_A", 0, 0, true, false, false, false, + bfin_handle_l1_data_attribute, NULL }, + { "l1_data_B", 0, 0, true, false, false, false, + bfin_handle_l1_data_attribute, NULL }, + { "l2", 0, 0, true, false, false, false, bfin_handle_l2_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Implementation of TARGET_ASM_INTEGER. When using FD-PIC, we need to diff --git a/gcc/config/cr16/cr16.c b/gcc/config/cr16/cr16.c index bd4e028f328..70c0e34ed8e 100644 --- a/gcc/config/cr16/cr16.c +++ b/gcc/config/cr16/cr16.c @@ -206,10 +206,10 @@ static void cr16_print_operand_address (FILE *, machine_mode, rtx); /* Table of machine attributes. */ static const struct attribute_spec cr16_attribute_table[] = { /* ISRs have special prologue and epilogue requirements. */ - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions }. */ - {"interrupt", 0, 0, false, true, true, NULL, false, NULL}, - {NULL, 0, 0, false, false, false, NULL, false, NULL} + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude }. */ + {"interrupt", 0, 0, false, true, true, false, NULL, NULL}, + {NULL, 0, 0, false, false, false, false, NULL, NULL} }; /* TARGET_ASM_UNALIGNED_xx_OP generates .?byte directive diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index d20c86441c1..c20a48430fa 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -740,12 +740,12 @@ extern GTY(()) section * darwin_sections[NUM_DARWIN_SECTIONS]; /* Extra attributes for Darwin. */ #define SUBTARGET_ATTRIBUTE_TABLE \ - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, \ - affects_type_identity, exclusions } */ \ - { "apple_kext_compatibility", 0, 0, false, true, false, \ - darwin_handle_kext_attribute, false, NULL }, \ - { "weak_import", 0, 0, true, false, false, \ - darwin_handle_weak_import_attribute, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, \ + affects_type_identity, handler, exclude } */ \ + { "apple_kext_compatibility", 0, 0, false, true, false, false, \ + darwin_handle_kext_attribute, NULL }, \ + { "weak_import", 0, 0, true, false, false, false, \ + darwin_handle_weak_import_attribute, NULL } /* Make local constant labels linker-visible, so that if one follows a weak_global constant, ld64 will be able to separate the atoms. */ diff --git a/gcc/config/epiphany/epiphany.c b/gcc/config/epiphany/epiphany.c index dece119cdb8..912823160da 100644 --- a/gcc/config/epiphany/epiphany.c +++ b/gcc/config/epiphany/epiphany.c @@ -460,14 +460,16 @@ epiphany_init_reg_tables (void) static const struct attribute_spec epiphany_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "interrupt", 0, 9, true, false, false, epiphany_handle_interrupt_attribute, true, NULL }, - { "forwarder_section", 1, 1, true, false, false, epiphany_handle_forwarder_attribute, false, NULL }, - { "long_call", 0, 0, false, true, true, NULL, false, NULL }, - { "short_call", 0, 0, false, true, true, NULL, false, NULL }, - { "disinterrupt", 0, 0, false, true, true, NULL, true, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "interrupt", 0, 9, true, false, false, true, + epiphany_handle_interrupt_attribute, NULL }, + { "forwarder_section", 1, 1, true, false, false, false, + epiphany_handle_forwarder_attribute, NULL }, + { "long_call", 0, 0, false, true, true, false, NULL, NULL }, + { "short_call", 0, 0, false, true, true, false, NULL, NULL }, + { "disinterrupt", 0, 0, false, true, true, true, NULL, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Handle an "interrupt" attribute; arguments as in diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c index d4e8c461c80..dd5b69c44f2 100644 --- a/gcc/config/h8300/h8300.c +++ b/gcc/config/h8300/h8300.c @@ -5424,23 +5424,23 @@ h8300_insert_attributes (tree node, tree *attributes) static const struct attribute_spec h8300_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "interrupt_handler", 0, 0, true, false, false, - h8300_handle_fndecl_attribute, false, NULL }, - { "saveall", 0, 0, true, false, false, - h8300_handle_fndecl_attribute, false, NULL }, - { "OS_Task", 0, 0, true, false, false, - h8300_handle_fndecl_attribute, false, NULL }, - { "monitor", 0, 0, true, false, false, - h8300_handle_fndecl_attribute, false, NULL }, - { "function_vector", 0, 0, true, false, false, - h8300_handle_fndecl_attribute, false, NULL }, - { "eightbit_data", 0, 0, true, false, false, - h8300_handle_eightbit_data_attribute, false, NULL }, - { "tiny_data", 0, 0, true, false, false, - h8300_handle_tiny_data_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "interrupt_handler", 0, 0, true, false, false, false, + h8300_handle_fndecl_attribute, NULL }, + { "saveall", 0, 0, true, false, false, false, + h8300_handle_fndecl_attribute, NULL }, + { "OS_Task", 0, 0, true, false, false, false, + h8300_handle_fndecl_attribute, NULL }, + { "monitor", 0, 0, true, false, false, false, + h8300_handle_fndecl_attribute, NULL }, + { "function_vector", 0, 0, true, false, false, false, + h8300_handle_fndecl_attribute, NULL }, + { "eightbit_data", 0, 0, true, false, false, false, + h8300_handle_eightbit_data_attribute, NULL }, + { "tiny_data", 0, 0, true, false, false, false, + h8300_handle_tiny_data_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index abc2f618544..12233c2416b 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -447,10 +447,10 @@ do { \ #define TARGET_USE_LOCAL_THUNK_ALIAS_P(DECL) (!DECL_ONE_ONLY (DECL)) #define SUBTARGET_ATTRIBUTE_TABLE \ - { "selectany", 0, 0, true, false, false, ix86_handle_selectany_attribute, \ - false, NULL } - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ + { "selectany", 0, 0, true, false, false, false, \ + ix86_handle_selectany_attribute, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ /* mcount() does not need a counter variable. */ #undef NO_PROFILE_COUNTERS diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 35037434bf5..551395f4e54 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -6270,10 +6270,8 @@ ix86_function_ok_for_sibcall (tree decl, tree exp) arguments as in struct attribute_spec.handler. */ static tree -ix86_handle_cconv_attribute (tree *node, tree name, - tree args, - int, - bool *no_add_attrs) +ix86_handle_cconv_attribute (tree *node, tree name, tree args, int, + bool *no_add_attrs) { if (TREE_CODE (*node) != FUNCTION_TYPE && TREE_CODE (*node) != METHOD_TYPE @@ -40230,10 +40228,8 @@ x86_order_regs_for_local_alloc (void) /* Handle a "callee_pop_aggregate_return" attribute; arguments as in struct attribute_spec handler. */ static tree -ix86_handle_callee_pop_aggregate_return (tree *node, tree name, - tree args, - int, - bool *no_add_attrs) +ix86_handle_callee_pop_aggregate_return (tree *node, tree name, tree args, int, + bool *no_add_attrs) { if (TREE_CODE (*node) != FUNCTION_TYPE && TREE_CODE (*node) != METHOD_TYPE @@ -44711,72 +44707,74 @@ ix86_expand_round_sse4 (rtx op0, rtx op1) /* Table of valid machine attributes. */ static const struct attribute_spec ix86_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ /* Stdcall attribute says callee is responsible for popping arguments if they are not variable. */ - { "stdcall", 0, 0, false, true, true, ix86_handle_cconv_attribute, - true, NULL }, + { "stdcall", 0, 0, false, true, true, true, ix86_handle_cconv_attribute, + NULL }, /* Fastcall attribute says callee is responsible for popping arguments if they are not variable. */ - { "fastcall", 0, 0, false, true, true, ix86_handle_cconv_attribute, - true, NULL }, + { "fastcall", 0, 0, false, true, true, true, ix86_handle_cconv_attribute, + NULL }, /* Thiscall attribute says callee is responsible for popping arguments if they are not variable. */ - { "thiscall", 0, 0, false, true, true, ix86_handle_cconv_attribute, - true, NULL }, + { "thiscall", 0, 0, false, true, true, true, ix86_handle_cconv_attribute, + NULL }, /* Cdecl attribute says the callee is a normal C declaration */ - { "cdecl", 0, 0, false, true, true, ix86_handle_cconv_attribute, - true, NULL }, + { "cdecl", 0, 0, false, true, true, true, ix86_handle_cconv_attribute, + NULL }, /* Regparm attribute specifies how many integer arguments are to be passed in registers. */ - { "regparm", 1, 1, false, true, true, ix86_handle_cconv_attribute, - true, NULL }, + { "regparm", 1, 1, false, true, true, true, ix86_handle_cconv_attribute, + NULL }, /* Sseregparm attribute says we are using x86_64 calling conventions for FP arguments. */ - { "sseregparm", 0, 0, false, true, true, ix86_handle_cconv_attribute, - true, NULL }, + { "sseregparm", 0, 0, false, true, true, true, ix86_handle_cconv_attribute, + NULL }, /* The transactional memory builtins are implicitly regparm or fastcall depending on the ABI. Override the generic do-nothing attribute that these builtins were declared with. */ - { "*tm regparm", 0, 0, false, true, true, ix86_handle_tm_regparm_attribute, - true, NULL }, + { "*tm regparm", 0, 0, false, true, true, true, + ix86_handle_tm_regparm_attribute, NULL }, /* force_align_arg_pointer says this function realigns the stack at entry. */ { (const char *)&ix86_force_align_arg_pointer_string, 0, 0, - false, true, true, ix86_handle_force_align_arg_pointer_attribute, false, + false, true, true, false, ix86_handle_force_align_arg_pointer_attribute, NULL }, #if TARGET_DLLIMPORT_DECL_ATTRIBUTES - { "dllimport", 0, 0, false, false, false, handle_dll_attribute, false, NULL }, - { "dllexport", 0, 0, false, false, false, handle_dll_attribute, false, NULL }, - { "shared", 0, 0, true, false, false, ix86_handle_shared_attribute, - false, NULL }, + { "dllimport", 0, 0, false, false, false, false, handle_dll_attribute, + NULL }, + { "dllexport", 0, 0, false, false, false, false, handle_dll_attribute, + NULL }, + { "shared", 0, 0, true, false, false, false, + ix86_handle_shared_attribute, false, NULL }, #endif - { "ms_struct", 0, 0, false, false, false, ix86_handle_struct_attribute, - false, NULL }, - { "gcc_struct", 0, 0, false, false, false, ix86_handle_struct_attribute, - false, NULL }, + { "ms_struct", 0, 0, false, false, false, false, + ix86_handle_struct_attribute, NULL }, + { "gcc_struct", 0, 0, false, false, false, false, + ix86_handle_struct_attribute, NULL }, #ifdef SUBTARGET_ATTRIBUTE_TABLE SUBTARGET_ATTRIBUTE_TABLE, #endif /* ms_abi and sysv_abi calling convention function attributes. */ - { "ms_abi", 0, 0, false, true, true, ix86_handle_abi_attribute, true, NULL }, - { "sysv_abi", 0, 0, false, true, true, ix86_handle_abi_attribute, true, + { "ms_abi", 0, 0, false, true, true, true, ix86_handle_abi_attribute, NULL }, + { "sysv_abi", 0, 0, false, true, true, true, ix86_handle_abi_attribute, NULL }, - { "ms_abi va_list", 0, 0, false, false, false, NULL, false, NULL }, - { "sysv_abi va_list", 0, 0, false, false, false, NULL, false, NULL }, - { "ms_hook_prologue", 0, 0, true, false, false, ix86_handle_fndecl_attribute, - false, NULL }, - { "callee_pop_aggregate_return", 1, 1, false, true, true, - ix86_handle_callee_pop_aggregate_return, true, NULL }, - { "interrupt", 0, 0, false, true, true, - ix86_handle_interrupt_attribute, false, NULL }, - { "no_caller_saved_registers", 0, 0, false, true, true, - ix86_handle_no_caller_saved_registers_attribute, false, NULL }, - { "naked", 0, 0, true, false, false, - ix86_handle_fndecl_attribute, false, NULL }, + { "ms_abi va_list", 0, 0, false, false, false, false, NULL, NULL }, + { "sysv_abi va_list", 0, 0, false, false, false, false, NULL, NULL }, + { "ms_hook_prologue", 0, 0, true, false, false, false, + ix86_handle_fndecl_attribute, NULL }, + { "callee_pop_aggregate_return", 1, 1, false, true, true, true, + ix86_handle_callee_pop_aggregate_return, NULL }, + { "interrupt", 0, 0, false, true, true, false, + ix86_handle_interrupt_attribute, NULL }, + { "no_caller_saved_registers", 0, 0, false, true, true, false, + ix86_handle_no_caller_saved_registers_attribute, NULL }, + { "naked", 0, 0, true, false, false, false, + ix86_handle_fndecl_attribute, NULL }, /* End element. */ - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Implement targetm.vectorize.builtin_vectorization_cost. */ diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index ad4bb17d1ad..b16c3401aa0 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -359,18 +359,18 @@ static bool ia64_expand_vec_perm_const_1 (struct expand_vec_perm_d *d); /* Table of valid machine attributes. */ static const struct attribute_spec ia64_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "syscall_linkage", 0, 0, false, true, true, NULL, false, NULL }, - { "model", 1, 1, true, false, false, ia64_handle_model_attribute, - false, NULL }, + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "syscall_linkage", 0, 0, false, true, true, false, NULL, NULL }, + { "model", 1, 1, true, false, false, false, + ia64_handle_model_attribute, NULL }, #if TARGET_ABI_OPEN_VMS - { "common_object", 1, 1, true, false, false, - ia64_vms_common_object_attribute, false, NULL }, + { "common_object", 1, 1, true, false, false, false, + ia64_vms_common_object_attribute, NULL }, #endif - { "version_id", 1, 1, true, false, false, - ia64_handle_version_id_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { "version_id", 1, 1, true, false, false, false, + ia64_handle_version_id_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Initialize the GCC target structure. */ diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c index 281b54ca31c..244e6bcc160 100644 --- a/gcc/config/m32c/m32c.c +++ b/gcc/config/m32c/m32c.c @@ -3000,14 +3000,15 @@ current_function_special_page_vector (rtx x) #undef TARGET_ATTRIBUTE_TABLE #define TARGET_ATTRIBUTE_TABLE m32c_attribute_table static const struct attribute_spec m32c_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - {"interrupt", 0, 0, false, false, false, interrupt_handler, false, NULL}, - {"bank_switch", 0, 0, false, false, false, interrupt_handler, false, NULL}, - {"fast_interrupt", 0, 0, false, false, false, interrupt_handler, false, NULL}, - {"function_vector", 1, 1, true, false, false, function_vector_handler, - false, NULL}, - {0, 0, 0, 0, 0, 0, 0, false, NULL} + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "interrupt", 0, 0, false, false, false, false, interrupt_handler, NULL }, + { "bank_switch", 0, 0, false, false, false, false, interrupt_handler, NULL }, + { "fast_interrupt", 0, 0, false, false, false, false, + interrupt_handler, NULL }, + { "function_vector", 1, 1, true, false, false, false, + function_vector_handler, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; #undef TARGET_COMP_TYPE_ATTRIBUTES diff --git a/gcc/config/m32r/m32r.c b/gcc/config/m32r/m32r.c index bcca103aa2a..830e7e742fb 100644 --- a/gcc/config/m32r/m32r.c +++ b/gcc/config/m32r/m32r.c @@ -110,12 +110,12 @@ static HOST_WIDE_INT m32r_starting_frame_offset (void); static const struct attribute_spec m32r_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "interrupt", 0, 0, true, false, false, NULL, false, NULL }, - { "model", 1, 1, true, false, false, m32r_handle_model_attribute, - false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "interrupt", 0, 0, true, false, false, false, NULL, NULL }, + { "model", 1, 1, true, false, false, false, m32r_handle_model_attribute, + NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Initialize the GCC target structure. */ diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index c5b034a615d..075ab47cc0b 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -347,15 +347,15 @@ static bool m68k_modes_tieable_p (machine_mode, machine_mode); static const struct attribute_spec m68k_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "interrupt", 0, 0, true, false, false, m68k_handle_fndecl_attribute, - false }, - { "interrupt_handler", 0, 0, true, false, false, - m68k_handle_fndecl_attribute, false, NULL }, - { "interrupt_thread", 0, 0, true, false, false, - m68k_handle_fndecl_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "interrupt", 0, 0, true, false, false, false, + m68k_handle_fndecl_attribute, NULL }, + { "interrupt_handler", 0, 0, true, false, false, false, + m68k_handle_fndecl_attribute, NULL }, + { "interrupt_thread", 0, 0, true, false, false, false, + m68k_handle_fndecl_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; struct gcc_target targetm = TARGET_INITIALIZER; diff --git a/gcc/config/mcore/mcore.c b/gcc/config/mcore/mcore.c index af36ebeb36f..4bd1671f99d 100644 --- a/gcc/config/mcore/mcore.c +++ b/gcc/config/mcore/mcore.c @@ -151,13 +151,13 @@ static bool mcore_modes_tieable_p (machine_mode, machine_mode); static const struct attribute_spec mcore_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "dllexport", 0, 0, true, false, false, NULL, false, NULL }, - { "dllimport", 0, 0, true, false, false, NULL, false, NULL }, - { "naked", 0, 0, true, false, false, mcore_handle_naked_attribute, - false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "dllexport", 0, 0, true, false, false, false, NULL, NULL }, + { "dllimport", 0, 0, true, false, false, false, NULL, NULL }, + { "naked", 0, 0, true, false, false, false, + mcore_handle_naked_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Initialize the GCC target structure. */ diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c index acdff6c655d..a808bd06133 100644 --- a/gcc/config/microblaze/microblaze.c +++ b/gcc/config/microblaze/microblaze.c @@ -215,18 +215,13 @@ int fast_interrupt; int save_volatiles; const struct attribute_spec microblaze_attribute_table[] = { - /* name min_len, max_len, decl_req, type_req, fn_type, req_handler, - affects_type_identity, exclusions */ - {"interrupt_handler", 0, 0, true, false, false, NULL, - false, NULL }, - {"break_handler", 0, 0, true, false, false, NULL, - false, NULL }, - {"fast_interrupt", 0, 0, true, false, false, NULL, - false, NULL }, - {"save_volatiles" , 0, 0, true, false, false, NULL, - false, NULL }, - { NULL, 0, 0, false, false, false, NULL, - false, NULL } + /* name min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude */ + {"interrupt_handler", 0, 0, true, false, false, false, NULL, NULL }, + {"break_handler", 0, 0, true, false, false, false, NULL, NULL }, + {"fast_interrupt", 0, 0, true, false, false, false, NULL, NULL }, + {"save_volatiles", 0, 0, true, false, false, false, NULL, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; static int microblaze_interrupt_function_p (tree); diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 4e70a9b2572..d6f7e28c030 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -595,29 +595,29 @@ static tree mips_handle_use_shadow_register_set_attr (tree *, tree, tree, int, /* The value of TARGET_ATTRIBUTE_TABLE. */ static const struct attribute_spec mips_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - om_diagnostic } */ - { "long_call", 0, 0, false, true, true, NULL, false, NULL }, - { "short_call", 0, 0, false, true, true, NULL, false, NULL }, - { "far", 0, 0, false, true, true, NULL, false, NULL }, - { "near", 0, 0, false, true, true, NULL, false, NULL }, + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "long_call", 0, 0, false, true, true, false, NULL, NULL }, + { "short_call", 0, 0, false, true, true, false, NULL, NULL }, + { "far", 0, 0, false, true, true, false, NULL, NULL }, + { "near", 0, 0, false, true, true, false, NULL, NULL }, /* We would really like to treat "mips16" and "nomips16" as type attributes, but GCC doesn't provide the hooks we need to support the right conversion rules. As declaration attributes, they affect code generation but don't carry other semantics. */ - { "mips16", 0, 0, true, false, false, NULL, false, NULL }, - { "nomips16", 0, 0, true, false, false, NULL, false, NULL }, - { "micromips", 0, 0, true, false, false, NULL, false, NULL }, - { "nomicromips", 0, 0, true, false, false, NULL, false, NULL }, - { "nocompression", 0, 0, true, false, false, NULL, false, NULL }, + { "mips16", 0, 0, true, false, false, false, NULL, NULL }, + { "nomips16", 0, 0, true, false, false, false, NULL, NULL }, + { "micromips", 0, 0, true, false, false, false, NULL, NULL }, + { "nomicromips", 0, 0, true, false, false, false, NULL, NULL }, + { "nocompression", 0, 0, true, false, false, false, NULL, NULL }, /* Allow functions to be specified as interrupt handlers */ - { "interrupt", 0, 1, false, true, true, mips_handle_interrupt_attr, - false, NULL }, - { "use_shadow_register_set", 0, 1, false, true, true, - mips_handle_use_shadow_register_set_attr, false, NULL }, - { "keep_interrupts_masked", 0, 0, false, true, true, NULL, false, NULL }, - { "use_debug_exception_return", 0, 0, false, true, true, NULL, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { "interrupt", 0, 1, false, true, true, false, mips_handle_interrupt_attr, + NULL }, + { "use_shadow_register_set", 0, 1, false, true, true, false, + mips_handle_use_shadow_register_set_attr, NULL }, + { "keep_interrupts_masked", 0, 0, false, true, true, false, NULL, NULL }, + { "use_debug_exception_return", 0, 0, false, true, true, false, NULL, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* A table describing all the processors GCC knows about; see diff --git a/gcc/config/msp430/msp430.c b/gcc/config/msp430/msp430.c index 038a01acb00..e8f4c9f3652 100644 --- a/gcc/config/msp430/msp430.c +++ b/gcc/config/msp430/msp430.c @@ -2049,28 +2049,28 @@ msp430_data_attr (tree * node, /* Table of MSP430-specific attributes. */ const struct attribute_spec msp430_attribute_table[] = { - /* Name min_num_args type_req, affects_type_identity - max_num_args, fn_type_req exclusions - decl_req handler. */ - { ATTR_INTR, 0, 1, true, false, false, msp430_attr, false, NULL }, - { ATTR_NAKED, 0, 0, true, false, false, msp430_attr, false, NULL }, - { ATTR_REENT, 0, 0, true, false, false, msp430_attr, false, NULL }, - { ATTR_CRIT, 0, 0, true, false, false, msp430_attr, false, NULL }, - { ATTR_WAKEUP, 0, 0, true, false, false, msp430_attr, false, NULL }, - - { ATTR_LOWER, 0, 0, true, false, false, msp430_section_attr, false, + /* Name min_num_args type_req, handler + max_num_args, fn_type_req exclude + decl_req affects_type_identity. */ + { ATTR_INTR, 0, 1, true, false, false, false, msp430_attr, NULL }, + { ATTR_NAKED, 0, 0, true, false, false, false, msp430_attr, NULL }, + { ATTR_REENT, 0, 0, true, false, false, false, msp430_attr, NULL }, + { ATTR_CRIT, 0, 0, true, false, false, false, msp430_attr, NULL }, + { ATTR_WAKEUP, 0, 0, true, false, false, false, msp430_attr, NULL }, + + { ATTR_LOWER, 0, 0, true, false, false, false, msp430_section_attr, NULL }, - { ATTR_UPPER, 0, 0, true, false, false, msp430_section_attr, false, + { ATTR_UPPER, 0, 0, true, false, false, false, msp430_section_attr, NULL }, - { ATTR_EITHER, 0, 0, true, false, false, msp430_section_attr, false, + { ATTR_EITHER, 0, 0, true, false, false, false, msp430_section_attr, NULL }, - { ATTR_NOINIT, 0, 0, true, false, false, msp430_data_attr, false, + { ATTR_NOINIT, 0, 0, true, false, false, false, msp430_data_attr, NULL }, - { ATTR_PERSIST, 0, 0, true, false, false, msp430_data_attr, false, + { ATTR_PERSIST, 0, 0, true, false, false, false, msp430_data_attr, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; #undef TARGET_ASM_FUNCTION_PROLOGUE diff --git a/gcc/config/nds32/nds32.c b/gcc/config/nds32/nds32.c index ba03c7a9961..e4ba5ff8cb6 100644 --- a/gcc/config/nds32/nds32.c +++ b/gcc/config/nds32/nds32.c @@ -83,34 +83,34 @@ static const char * const nds32_intrinsic_register_names[] = static const struct attribute_spec nds32_attribute_table[] = { /* Syntax: { name, min_len, max_len, decl_required, type_required, - function_type_required, handler, affects_type_identity, - exclusions } */ + function_type_required, affects_type_identity, handler, + exclude } */ /* The interrupt vid: [0-63]+ (actual vector number starts from 9 to 72). */ - { "interrupt", 1, 64, false, false, false, NULL, false, NULL }, + { "interrupt", 1, 64, false, false, false, false, NULL, NULL }, /* The exception vid: [1-8]+ (actual vector number starts from 1 to 8). */ - { "exception", 1, 8, false, false, false, NULL, false, NULL }, + { "exception", 1, 8, false, false, false, false, NULL, NULL }, /* Argument is user's interrupt numbers. The vector number is always 0. */ - { "reset", 1, 1, false, false, false, NULL, false, NULL }, + { "reset", 1, 1, false, false, false, false, NULL, NULL }, /* The attributes describing isr nested type. */ - { "nested", 0, 0, false, false, false, NULL, false, NULL }, - { "not_nested", 0, 0, false, false, false, NULL, false, NULL }, - { "nested_ready", 0, 0, false, false, false, NULL, false, NULL }, + { "nested", 0, 0, false, false, false, false, NULL, NULL }, + { "not_nested", 0, 0, false, false, false, false, NULL, NULL }, + { "nested_ready", 0, 0, false, false, false, false, NULL, NULL }, /* The attributes describing isr register save scheme. */ - { "save_all", 0, 0, false, false, false, NULL, false, NULL }, - { "partial_save", 0, 0, false, false, false, NULL, false, NULL }, + { "save_all", 0, 0, false, false, false, false, NULL, NULL }, + { "partial_save", 0, 0, false, false, false, false, NULL, NULL }, /* The attributes used by reset attribute. */ - { "nmi", 1, 1, false, false, false, NULL, false, NULL }, - { "warm", 1, 1, false, false, false, NULL, false, NULL }, + { "nmi", 1, 1, false, false, false, false, NULL, NULL }, + { "warm", 1, 1, false, false, false, false, NULL, NULL }, /* The attribute telling no prologue/epilogue. */ - { "naked", 0, 0, false, false, false, NULL, false, NULL }, + { "naked", 0, 0, false, false, false, false, NULL, NULL }, /* The last attribute spec is set to be NULL. */ - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c index 16ff370bb32..f57b4f9b33b 100644 --- a/gcc/config/nvptx/nvptx.c +++ b/gcc/config/nvptx/nvptx.c @@ -4457,13 +4457,13 @@ nvptx_handle_shared_attribute (tree *node, tree name, tree ARG_UNUSED (args), /* Table of valid machine attributes. */ static const struct attribute_spec nvptx_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "kernel", 0, 0, true, false, false, nvptx_handle_kernel_attribute, false, + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "kernel", 0, 0, true, false, false, false, nvptx_handle_kernel_attribute, NULL }, - { "shared", 0, 0, true, false, false, nvptx_handle_shared_attribute, false, + { "shared", 0, 0, true, false, false, false, nvptx_handle_shared_attribute, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Limit vector alignments to BIGGEST_ALIGNMENT. */ diff --git a/gcc/config/powerpcspe/powerpcspe.c b/gcc/config/powerpcspe/powerpcspe.c index 44165802be4..7d1124223d2 100644 --- a/gcc/config/powerpcspe/powerpcspe.c +++ b/gcc/config/powerpcspe/powerpcspe.c @@ -1533,22 +1533,22 @@ static const char alt_reg_names[][8] = static const struct attribute_spec rs6000_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "altivec", 1, 1, false, true, false, rs6000_handle_altivec_attribute, - false, NULL }, - { "longcall", 0, 0, false, true, true, rs6000_handle_longcall_attribute, - false, NULL }, - { "shortcall", 0, 0, false, true, true, rs6000_handle_longcall_attribute, - false, NULL }, - { "ms_struct", 0, 0, false, false, false, rs6000_handle_struct_attribute, - false, NULL }, - { "gcc_struct", 0, 0, false, false, false, rs6000_handle_struct_attribute, - false, NULL }, + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "altivec", 1, 1, false, true, false, false, + rs6000_handle_altivec_attribute, NULL }, + { "longcall", 0, 0, false, true, true, false, + rs6000_handle_longcall_attribute, NULL }, + { "shortcall", 0, 0, false, true, true, false, + rs6000_handle_longcall_attribute, NULL }, + { "ms_struct", 0, 0, false, false, false, false, + rs6000_handle_struct_attribute, NULL }, + { "gcc_struct", 0, 0, false, false, false, false, + rs6000_handle_struct_attribute, NULL }, #ifdef SUBTARGET_ATTRIBUTE_TABLE SUBTARGET_ATTRIBUTE_TABLE, #endif - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; #ifndef TARGET_PROFILE_KERNEL diff --git a/gcc/config/rl78/rl78.c b/gcc/config/rl78/rl78.c index b9f6dcc9ded..e2532b13b56 100644 --- a/gcc/config/rl78/rl78.c +++ b/gcc/config/rl78/rl78.c @@ -857,17 +857,17 @@ rl78_handle_saddr_attribute (tree * node, /* Table of RL78-specific attributes. */ const struct attribute_spec rl78_attribute_table[] = { - /* Name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions. */ - { "interrupt", 0, 0, true, false, false, rl78_handle_func_attribute, - false, NULL }, - { "brk_interrupt", 0, 0, true, false, false, rl78_handle_func_attribute, - false, NULL }, - { "naked", 0, 0, true, false, false, rl78_handle_naked_attribute, - false, NULL }, - { "saddr", 0, 0, true, false, false, rl78_handle_saddr_attribute, - false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* Name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude. */ + { "interrupt", 0, 0, true, false, false, false, + rl78_handle_func_attribute, NULL }, + { "brk_interrupt", 0, 0, true, false, false, false, + rl78_handle_func_attribute, NULL }, + { "naked", 0, 0, true, false, false, false, + rl78_handle_naked_attribute, NULL }, + { "saddr", 0, 0, true, false, false, false, + rl78_handle_saddr_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 995ae0482fb..215a1f4d3e4 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -1518,22 +1518,22 @@ static const char alt_reg_names[][8] = static const struct attribute_spec rs6000_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "altivec", 1, 1, false, true, false, rs6000_handle_altivec_attribute, - false, NULL }, - { "longcall", 0, 0, false, true, true, rs6000_handle_longcall_attribute, - false, NULL }, - { "shortcall", 0, 0, false, true, true, rs6000_handle_longcall_attribute, - false, NULL }, - { "ms_struct", 0, 0, false, false, false, rs6000_handle_struct_attribute, - false, NULL }, - { "gcc_struct", 0, 0, false, false, false, rs6000_handle_struct_attribute, - false, NULL }, + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "altivec", 1, 1, false, true, false, false, + rs6000_handle_altivec_attribute, NULL }, + { "longcall", 0, 0, false, true, true, false, + rs6000_handle_longcall_attribute, NULL }, + { "shortcall", 0, 0, false, true, true, false, + rs6000_handle_longcall_attribute, NULL }, + { "ms_struct", 0, 0, false, false, false, false, + rs6000_handle_struct_attribute, NULL }, + { "gcc_struct", 0, 0, false, false, false, false, + rs6000_handle_struct_attribute, NULL }, #ifdef SUBTARGET_ATTRIBUTE_TABLE SUBTARGET_ATTRIBUTE_TABLE, #endif - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; #ifndef TARGET_PROFILE_KERNEL diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c index 84032b70d38..071cca5a947 100644 --- a/gcc/config/rx/rx.c +++ b/gcc/config/rx/rx.c @@ -2731,17 +2731,17 @@ rx_handle_vector_attribute (tree * node, /* Table of RX specific attributes. */ const struct attribute_spec rx_attribute_table[] = { - /* Name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions. */ - { "fast_interrupt", 0, 0, true, false, false, rx_handle_func_attribute, - false, NULL }, - { "interrupt", 0, -1, true, false, false, rx_handle_func_attribute, - false, NULL }, - { "naked", 0, 0, true, false, false, rx_handle_func_attribute, - false, NULL }, - { "vector", 1, -1, true, false, false, rx_handle_vector_attribute, - false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* Name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude. */ + { "fast_interrupt", 0, 0, true, false, false, false, + rx_handle_func_attribute, NULL }, + { "interrupt", 0, -1, true, false, false, false, + rx_handle_func_attribute, NULL }, + { "naked", 0, 0, true, false, false, false, + rx_handle_func_attribute, NULL }, + { "vector", 1, -1, true, false, false, false, + rx_handle_vector_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Implement TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE. */ diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index c87f44db29a..b87b49e2060 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -1178,12 +1178,12 @@ s390_handle_vectorbool_attribute (tree *node, tree name ATTRIBUTE_UNUSED, } static const struct attribute_spec s390_attribute_table[] = { - { "hotpatch", 2, 2, true, false, false, - s390_handle_hotpatch_attribute, false, NULL }, - { "s390_vector_bool", 0, 0, false, true, false, - s390_handle_vectorbool_attribute, true, NULL }, + { "hotpatch", 2, 2, true, false, false, false, + s390_handle_hotpatch_attribute, NULL }, + { "s390_vector_bool", 0, 0, false, true, false, true, + s390_handle_vectorbool_attribute, NULL }, /* End element. */ - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Return the alignment for LABEL. We default to the -falign-labels diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 85cc77b873a..a627e8f3599 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -329,25 +329,25 @@ static bool sh_can_change_mode_class (machine_mode, machine_mode, reg_class_t); static const struct attribute_spec sh_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "interrupt_handler", 0, 0, true, false, false, - sh_handle_interrupt_handler_attribute, false, NULL }, - { "sp_switch", 1, 1, true, false, false, - sh_handle_sp_switch_attribute, false, NULL }, - { "trap_exit", 1, 1, true, false, false, - sh_handle_trap_exit_attribute, false, NULL }, - { "renesas", 0, 0, false, true, false, - sh_handle_renesas_attribute, false, NULL }, - { "trapa_handler", 0, 0, true, false, false, - sh_handle_interrupt_handler_attribute, false, NULL }, - { "nosave_low_regs", 0, 0, true, false, false, - sh_handle_interrupt_handler_attribute, false, NULL }, - { "resbank", 0, 0, true, false, false, - sh_handle_resbank_handler_attribute, false, NULL }, - { "function_vector", 1, 1, true, false, false, - sh2a_handle_function_vector_handler_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "interrupt_handler", 0, 0, true, false, false, false, + sh_handle_interrupt_handler_attribute, NULL }, + { "sp_switch", 1, 1, true, false, false, false, + sh_handle_sp_switch_attribute, NULL }, + { "trap_exit", 1, 1, true, false, false, false, + sh_handle_trap_exit_attribute, NULL }, + { "renesas", 0, 0, false, true, false, false, + sh_handle_renesas_attribute, NULL }, + { "trapa_handler", 0, 0, true, false, false, false, + sh_handle_interrupt_handler_attribute, NULL }, + { "nosave_low_regs", 0, 0, true, false, false, false, + sh_handle_interrupt_handler_attribute, NULL }, + { "resbank", 0, 0, true, false, false, false, + sh_handle_resbank_handler_attribute, NULL }, + { "function_vector", 1, 1, true, false, false, false, + sh2a_handle_function_vector_handler_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Initialize the GCC target structure. */ diff --git a/gcc/config/sol2.h b/gcc/config/sol2.h index 69c713b875f..268ab13e4ee 100644 --- a/gcc/config/sol2.h +++ b/gcc/config/sol2.h @@ -406,8 +406,8 @@ along with GCC; see the file COPYING3. If not see /* #pragma init and #pragma fini are implemented on top of init and fini attributes. */ #define SOLARIS_ATTRIBUTE_TABLE \ - { "init", 0, 0, true, false, false, NULL, false, NULL }, \ - { "fini", 0, 0, true, false, false, NULL, false, NULL } + { "init", 0, 0, true, false, false, false, NULL, NULL }, \ + { "fini", 0, 0, true, false, false, false, NULL, NULL } /* Solaris-specific #pragmas are implemented on top of attributes. Hook in the bits from config/sol2.c. */ diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 890bde9fc0a..fc50f9b1aa0 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -691,10 +691,10 @@ static HOST_WIDE_INT sparc_constant_alignment (const_tree, HOST_WIDE_INT); /* Table of valid machine attributes. */ static const struct attribute_spec sparc_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - do_diagnostic, exclusions } */ + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + do_diagnostic, handler, exclude } */ SUBTARGET_ATTRIBUTE_TABLE, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; #endif diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c index 84dddbcc5ba..c1c79a2656d 100644 --- a/gcc/config/spu/spu.c +++ b/gcc/config/spu/spu.c @@ -7215,13 +7215,13 @@ spu_constant_alignment (const_tree, HOST_WIDE_INT align) /* Table of machine attributes. */ static const struct attribute_spec spu_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "naked", 0, 0, true, false, false, spu_handle_fndecl_attribute, - false, NULL }, - { "spu_vector", 0, 0, false, true, false, spu_handle_vector_attribute, - false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "naked", 0, 0, true, false, false, false, + spu_handle_fndecl_attribute, NULL }, + { "spu_vector", 0, 0, false, true, false, false, + spu_handle_vector_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* TARGET overrides. */ diff --git a/gcc/config/stormy16/stormy16.c b/gcc/config/stormy16/stormy16.c index 3a21260fda7..bf7269391b5 100644 --- a/gcc/config/stormy16/stormy16.c +++ b/gcc/config/stormy16/stormy16.c @@ -2189,15 +2189,15 @@ static tree xstormy16_handle_below100_attribute static const struct attribute_spec xstormy16_attribute_table[] = { - /* name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions. */ - { "interrupt", 0, 0, false, true, true, - xstormy16_handle_interrupt_attribute , false, NULL }, - { "BELOW100", 0, 0, false, false, false, - xstormy16_handle_below100_attribute, false, NULL }, - { "below100", 0, 0, false, false, false, - xstormy16_handle_below100_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude. */ + { "interrupt", 0, 0, false, true, true, false, + xstormy16_handle_interrupt_attribute, NULL }, + { "BELOW100", 0, 0, false, false, false, false, + xstormy16_handle_below100_attribute, NULL }, + { "below100", 0, 0, false, false, false, false, + xstormy16_handle_below100_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Handle an "interrupt" attribute; diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c index 3d0bbf55e24..a26f5d655ff 100644 --- a/gcc/config/v850/v850.c +++ b/gcc/config/v850/v850.c @@ -2072,8 +2072,7 @@ v850_set_data_area (tree decl, v850_data_area data_area) /* Handle an "interrupt" attribute; arguments as in struct attribute_spec.handler. */ static tree -v850_handle_interrupt_attribute (tree * node, - tree name, +v850_handle_interrupt_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED, int flags ATTRIBUTE_UNUSED, bool * no_add_attrs) @@ -2091,8 +2090,7 @@ v850_handle_interrupt_attribute (tree * node, /* Handle a "sda", "tda" or "zda" attribute; arguments as in struct attribute_spec.handler. */ static tree -v850_handle_data_area_attribute (tree* node, - tree name, +v850_handle_data_area_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED, int flags ATTRIBUTE_UNUSED, bool * no_add_attrs) @@ -3187,19 +3185,19 @@ v850_adjust_insn_length (rtx_insn *insn, int length) static const struct attribute_spec v850_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "interrupt_handler", 0, 0, true, false, false, - v850_handle_interrupt_attribute, false, NULL }, - { "interrupt", 0, 0, true, false, false, - v850_handle_interrupt_attribute, false, NULL }, - { "sda", 0, 0, true, false, false, - v850_handle_data_area_attribute, false, NULL }, - { "tda", 0, 0, true, false, false, - v850_handle_data_area_attribute, false, NULL }, - { "zda", 0, 0, true, false, false, - v850_handle_data_area_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "interrupt_handler", 0, 0, true, false, false, false, + v850_handle_interrupt_attribute, NULL }, + { "interrupt", 0, 0, true, false, false, false, + v850_handle_interrupt_attribute, NULL }, + { "sda", 0, 0, true, false, false, false, + v850_handle_data_area_attribute, NULL }, + { "tda", 0, 0, true, false, false, false, + v850_handle_data_area_attribute, NULL }, + { "zda", 0, 0, true, false, false, false, + v850_handle_data_area_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; static void diff --git a/gcc/config/visium/visium.c b/gcc/config/visium/visium.c index a8b90019aa9..4165214f5b7 100644 --- a/gcc/config/visium/visium.c +++ b/gcc/config/visium/visium.c @@ -145,11 +145,11 @@ static inline bool current_function_has_lr_slot (void); interrupt -- specifies this function is an interrupt handler. */ static const struct attribute_spec visium_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - {"interrupt", 0, 0, true, false, false, visium_handle_interrupt_attr, false, - NULL}, - {NULL, 0, 0, false, false, false, NULL, false, NULL}, + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "interrupt", 0, 0, true, false, false, false, visium_handle_interrupt_attr, + NULL}, + { NULL, 0, 0, false, false, false, false, NULL, NULL }, }; static struct machine_function *visium_init_machine_status (void); diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 37c129d174f..25d7f58ea58 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2017-12-15 Jakub Jelinek + + * tree.c (cxx_attribute_table, std_attribute_table): Swap + affects_type_identity and handler fields, adjust comments. + 2017-12-15 Nathan Sidwell PR c++/59930 @@ -301,8 +306,6 @@ through into normal folding, otherwise just rebuild x if any op changed. - * g++.dg/warn/pr81675.C: New test. - 2017-11-14 Boris Kolpackov * Make-lang.in (c++.install-plugin): Install backend import library. diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 0ae2eff4e1e..5528fa96fb7 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -4329,25 +4329,25 @@ handle_nodiscard_attribute (tree *node, tree name, tree /*args*/, /* Table of valid C++ attributes. */ const struct attribute_spec cxx_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "init_priority", 1, 1, true, false, false, - handle_init_priority_attribute, false, NULL }, - { "abi_tag", 1, -1, false, false, false, - handle_abi_tag_attribute, true, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "init_priority", 1, 1, true, false, false, false, + handle_init_priority_attribute, NULL }, + { "abi_tag", 1, -1, false, false, false, true, + handle_abi_tag_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Table of C++ standard attributes. */ const struct attribute_spec std_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "maybe_unused", 0, 0, false, false, false, - handle_unused_attribute, false, NULL }, - { "nodiscard", 0, 0, false, false, false, - handle_nodiscard_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "maybe_unused", 0, 0, false, false, false, false, + handle_unused_attribute, NULL }, + { "nodiscard", 0, 0, false, false, false, false, + handle_nodiscard_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Handle an "init_priority" attribute; arguments as in diff --git a/gcc/doc/plugins.texi b/gcc/doc/plugins.texi index dc3fa212881..1dcdcbaea72 100644 --- a/gcc/doc/plugins.texi +++ b/gcc/doc/plugins.texi @@ -381,7 +381,7 @@ handle_user_attribute (tree *node, tree name, tree args, /* Attribute definition */ static struct attribute_spec user_attr = - @{ "user", 1, 1, false, false, false, handle_user_attribute, false @}; + @{ "user", 1, 1, false, false, false, false, handle_user_attribute, NULL @}; /* Plugin callback called during attribute registration. Registered with register_callback (plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index cc8b11879f3..6fab2bc76a8 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2017-12-15 Jakub Jelinek + + * f95-lang.c (gfc_attribute_table): Swap affects_type_identity + and handler fields, adjust comments. + 2017-12-14 Qing Zhao PR middle_end/79538 diff --git a/gcc/fortran/f95-lang.c b/gcc/fortran/f95-lang.c index 0ecb2074dcc..dc9a1ae1cef 100644 --- a/gcc/fortran/f95-lang.c +++ b/gcc/fortran/f95-lang.c @@ -89,15 +89,15 @@ gfc_handle_omp_declare_target_attribute (tree *, tree, tree, int, bool *) /* Table of valid Fortran attributes. */ static const struct attribute_spec gfc_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity } */ - { "omp declare target", 0, 0, true, false, false, - gfc_handle_omp_declare_target_attribute, false, NULL }, - { "omp declare target link", 0, 0, true, false, false, - gfc_handle_omp_declare_target_attribute, false, NULL }, - { "oacc function", 0, -1, true, false, false, - gfc_handle_omp_declare_target_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "omp declare target", 0, 0, true, false, false, false, + gfc_handle_omp_declare_target_attribute, NULL }, + { "omp declare target link", 0, 0, true, false, false, false, + gfc_handle_omp_declare_target_attribute, NULL }, + { "oacc function", 0, -1, true, false, false, false, + gfc_handle_omp_declare_target_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; #undef LANG_HOOKS_NAME diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index 4823dc25f3e..ce2d407406f 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,8 @@ +2017-12-15 Jakub Jelinek + + * lto-lang.c (lto_attribute_table, lto_format_attribute_table): Swap + affects_type_identity and handler fields, adjust comments. + 2017-12-07 Richard Sandiford * lto.c (compare_tree_sccs_1): Compare the new VECTOR_CST flags. diff --git a/gcc/lto/lto-lang.c b/gcc/lto/lto-lang.c index 89702a4e652..2961b7df206 100644 --- a/gcc/lto/lto-lang.c +++ b/gcc/lto/lto-lang.c @@ -92,47 +92,47 @@ static const struct attribute_spec::exclusions attr_const_pure_exclusions[] = /* Table of machine-independent attributes supported in GIMPLE. */ const struct attribute_spec lto_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - do_diagnostic, exclusions } */ - { "noreturn", 0, 0, true, false, false, - handle_noreturn_attribute, false, + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "noreturn", 0, 0, true, false, false, false, + handle_noreturn_attribute, attr_noreturn_exclusions }, - { "leaf", 0, 0, true, false, false, - handle_leaf_attribute, false, NULL }, + { "leaf", 0, 0, true, false, false, false, + handle_leaf_attribute, NULL }, /* The same comments as for noreturn attributes apply to const ones. */ - { "const", 0, 0, true, false, false, - handle_const_attribute, false, + { "const", 0, 0, true, false, false, false, + handle_const_attribute, attr_const_pure_exclusions }, - { "malloc", 0, 0, true, false, false, - handle_malloc_attribute, false, NULL }, - { "pure", 0, 0, true, false, false, - handle_pure_attribute, false, + { "malloc", 0, 0, true, false, false, false, + handle_malloc_attribute, NULL }, + { "pure", 0, 0, true, false, false, false, + handle_pure_attribute, attr_const_pure_exclusions }, - { "no vops", 0, 0, true, false, false, - handle_novops_attribute, false, NULL }, - { "nonnull", 0, -1, false, true, true, - handle_nonnull_attribute, false, NULL }, - { "nothrow", 0, 0, true, false, false, - handle_nothrow_attribute, false, NULL }, - { "patchable_function_entry", 1, 2, true, false, false, + { "no vops", 0, 0, true, false, false, false, + handle_novops_attribute, NULL }, + { "nonnull", 0, -1, false, true, true, false, + handle_nonnull_attribute, NULL }, + { "nothrow", 0, 0, true, false, false, false, + handle_nothrow_attribute, NULL }, + { "patchable_function_entry", 1, 2, true, false, false, false, handle_patchable_function_entry_attribute, - false, NULL }, - { "returns_twice", 0, 0, true, false, false, - handle_returns_twice_attribute, false, + NULL }, + { "returns_twice", 0, 0, true, false, false, false, + handle_returns_twice_attribute, attr_returns_twice_exclusions }, - { "sentinel", 0, 1, false, true, true, - handle_sentinel_attribute, false, NULL }, - { "type generic", 0, 0, false, true, true, - handle_type_generic_attribute, false, NULL }, - { "fn spec", 1, 1, false, true, true, - handle_fnspec_attribute, false, NULL }, - { "transaction_pure", 0, 0, false, true, true, - handle_transaction_pure_attribute, false, NULL }, + { "sentinel", 0, 1, false, true, true, false, + handle_sentinel_attribute, NULL }, + { "type generic", 0, 0, false, true, true, false, + handle_type_generic_attribute, NULL }, + { "fn spec", 1, 1, false, true, true, false, + handle_fnspec_attribute, NULL }, + { "transaction_pure", 0, 0, false, true, true, false, + handle_transaction_pure_attribute, NULL }, /* For internal use only. The leading '*' both prevents its usage in source code and signals that it may be overridden by machine tables. */ - { "*tm regparm", 0, 0, false, true, true, - ignore_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + { "*tm regparm", 0, 0, false, true, true, false, + ignore_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; /* Give the specifications for the format attributes, used by C and all @@ -140,13 +140,13 @@ const struct attribute_spec lto_attribute_table[] = const struct attribute_spec lto_format_attribute_table[] = { - /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity, exclusions } */ - { "format", 3, 3, false, true, true, - handle_format_attribute, false, NULL }, - { "format_arg", 1, 1, false, true, true, - handle_format_arg_attribute, false, NULL }, - { NULL, 0, 0, false, false, false, NULL, false, NULL } + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, + affects_type_identity, handler, exclude } */ + { "format", 3, 3, false, true, true, false, + handle_format_attribute, NULL }, + { "format_arg", 1, 1, false, true, true, false, + handle_format_arg_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; enum built_in_attribute diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2a73f82c97f..9ab04282c4e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-12-15 Jakub Jelinek + + * g++.dg/plugin/attribute_plugin.c (user_attr): Swap + affects_type_identity and handler fields, add NULL for exclude. + 2017-12-14 Nathan Sidwell PR c++/59930 diff --git a/gcc/testsuite/g++.dg/plugin/attribute_plugin.c b/gcc/testsuite/g++.dg/plugin/attribute_plugin.c index 8de5f44cbf8..8bdaca77086 100644 --- a/gcc/testsuite/g++.dg/plugin/attribute_plugin.c +++ b/gcc/testsuite/g++.dg/plugin/attribute_plugin.c @@ -26,7 +26,7 @@ handle_user_attribute (tree *node, tree name, tree args, /* Attribute definition */ static struct attribute_spec user_attr = - { "user", 1, 1, false, false, false, handle_user_attribute, false }; + { "user", 1, 1, false, false, false, false, handle_user_attribute, NULL }; /* Plugin callback called during attribute registration */ diff --git a/gcc/tree-core.h b/gcc/tree-core.h index f225f999fc8..e25500def95 100644 --- a/gcc/tree-core.h +++ b/gcc/tree-core.h @@ -1929,6 +1929,8 @@ struct attribute_spec { and from a function return type (which is not itself a function pointer type) to the function type. */ bool function_type_required; + /* Specifies if attribute affects type's identity. */ + bool affects_type_identity; /* Function to handle this attribute. NODE points to the node to which the attribute is to be applied. If a DECL, it should be modified in place; if a TYPE, a copy should be created. NAME is the name of the @@ -1945,8 +1947,6 @@ struct attribute_spec { by the rest of this structure. */ tree (*handler) (tree *node, tree name, tree args, int flags, bool *no_add_attrs); - /* Specifies if attribute affects type's identity. */ - bool affects_type_identity; /* Specifies the name of an attribute that's mutually exclusive with this one, and whether the relationship applies to the function, -- 2.30.2