tree-core.h (struct attribute_spec): Swap affects_type_identity and handler fields.
authorJakub Jelinek <jakub@redhat.com>
Fri, 15 Dec 2017 15:13:12 +0000 (16:13 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 15 Dec 2017 15:13:12 +0000 (16:13 +0100)
* 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

51 files changed:
gcc/ChangeLog
gcc/ada/ChangeLog
gcc/ada/gcc-interface/utils.c
gcc/attribs.c
gcc/brig/ChangeLog
gcc/brig/brig-lang.c
gcc/c-family/ChangeLog
gcc/c-family/c-attribs.c
gcc/config/alpha/alpha.c
gcc/config/arc/arc.c
gcc/config/arm/arm.c
gcc/config/avr/avr.c
gcc/config/bfin/bfin.c
gcc/config/cr16/cr16.c
gcc/config/darwin.h
gcc/config/epiphany/epiphany.c
gcc/config/h8300/h8300.c
gcc/config/i386/cygming.h
gcc/config/i386/i386.c
gcc/config/ia64/ia64.c
gcc/config/m32c/m32c.c
gcc/config/m32r/m32r.c
gcc/config/m68k/m68k.c
gcc/config/mcore/mcore.c
gcc/config/microblaze/microblaze.c
gcc/config/mips/mips.c
gcc/config/msp430/msp430.c
gcc/config/nds32/nds32.c
gcc/config/nvptx/nvptx.c
gcc/config/powerpcspe/powerpcspe.c
gcc/config/rl78/rl78.c
gcc/config/rs6000/rs6000.c
gcc/config/rx/rx.c
gcc/config/s390/s390.c
gcc/config/sh/sh.c
gcc/config/sol2.h
gcc/config/sparc/sparc.c
gcc/config/spu/spu.c
gcc/config/stormy16/stormy16.c
gcc/config/v850/v850.c
gcc/config/visium/visium.c
gcc/cp/ChangeLog
gcc/cp/tree.c
gcc/doc/plugins.texi
gcc/fortran/ChangeLog
gcc/fortran/f95-lang.c
gcc/lto/ChangeLog
gcc/lto/lto-lang.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/plugin/attribute_plugin.c
gcc/tree-core.h

index 60f621d8fd1b8f747778b179c634bd263f5910e2..8830638d226357ede9d1e769bbd5e9a6c9e19be6 100644 (file)
@@ -1,5 +1,54 @@
 2017-12-15  Jakub Jelinek  <jakub@redhat.com>
 
+       * 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.
index fb3e7f48218bd76c5ce66e6c6e3d18fd0410abbd..e414acdb885289bc380c2e9e9c3c6388cd91f270 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-15  Jakub Jelinek  <jakub@redhat.com>
+
+       * gcc-interface/utils.c (gnat_internal_attribute_table): Swap
+       affects_type_identity and handler fields, adjust comments.
+
 2017-12-15  Eric Botcazou  <ebotcazou@adacore.com>
 
        * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use Component_Size of
index eae23d281b09e6c6732e6327cbe17d0b5dc896d7..a094ac78d6fe2c910732cb605b2877281eda7989 100644 (file)
@@ -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
index f65fd15814f818269aaa0437e5eb98725e718bd8..b7a7509171a51432589ddde233a3566119528639 100644 (file)
@@ -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 charns)
+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;
 
index 86c70d86f28795f8bba7ffda5d1293925574c853..0bb552e41cbc115d19947df699058930706e9f5b 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-15  Jakub Jelinek  <jakub@redhat.com>
+
+       * brig-lang.c (brig_attribute_table): Swap affects_type_identity
+       and handler fields, adjust comments.
+
 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
 
        * brig-lang.c (brig_attribute_table): Fix up comment.
index eea36a3c453e9887fbcc248fcee242695932edcf..01908f42bb3d9a3d736d2a7769a7441dd6fa139a 100644 (file)
@@ -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.  */
index 9f87d008382c60574408a5493e238fbb337b0f0b..e5343680a2287fd0e20ae0db1e521d5f7c021525 100644 (file)
@@ -1,3 +1,9 @@
+2017-12-15  Jakub Jelinek  <jakub@redhat.com>
+
+       * 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  <bernd.edlinger@hotmail.de>
 
        * c.opt (Wcast-function-type): New warning option.
index 186df05eec58e5c6d81d0a8614b67ceb927582da..2625f87d19dafb61433d277da22f9535a6c34378 100644 (file)
@@ -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
index edf9cb4af5932e1edbe251ffc996c1d3b0db3358..63821fc62350a7e4357b5336a948ea08d8856878 100644 (file)
@@ -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
index 9974a1f999b54c408d2f2612112fb96bfd35a0f6..3fc867f09c4068397888dd8a7da3de04d1b3a818 100644 (file)
@@ -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);
index 9b29a0a154e6beb43cb8463c6ee4cfc7b7a9dc67..1b2bcc3f74f1e74d90a888aa84e01a2c42bb8860 100644 (file)
@@ -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 }
 };
 \f
 /* Initialize the GCC target structure.  */
index fdae1469d414014909936fa6d06aa8beb14eb8b7..39decb820c21ec9fa461ca9f5f94c0e6f3b06dfb 100644 (file)
@@ -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 }
 };
 
 
index a5947435f3e99e1200060b8185d6b7ce4bdfaac9..96ef232f08535c08ff9120aae0e359d081d1f3b0 100644 (file)
@@ -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 }
 };
 \f
 /* Implementation of TARGET_ASM_INTEGER.  When using FD-PIC, we need to
index bd4e028f328ecdff2e57aca05cbcd5717e116e4d..70c0e34ed8ec1006832348aab28d76a2b3d8484b 100644 (file)
@@ -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
index d20c86441c14eada8e634ceba0faa9bacf4a2260..c20a48430faa9ea4cf78fda1eac95f574ea34456 100644 (file)
@@ -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.  */
index dece119cdb80c50abd8305d9e60fc308b503e10a..912823160dae4fb7809829d6903ad7942e2ff5bd 100644 (file)
@@ -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
index d4e8c461c800c678ca1e0ae0b3e3b125a7868b86..dd5b69c44f242f83088ba47a5f3968967506dea4 100644 (file)
@@ -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 }
 };
 
 
index abc2f61854468a6aa27deaba0d12098dd1679ddd..12233c2416bfe99759d45e6c5af65909c583f5f7 100644 (file)
@@ -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
index 35037434bf50ec26bd254e444542b29e4f04360e..551395f4e54c78d1cc56708f9491e072dea6b237 100644 (file)
@@ -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.  */
index ad4bb17d1adeb70a86f4eb410c4a8754649d0121..b16c3401aa090cbdcc29851cba465975f743c77d 100644 (file)
@@ -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.  */
index 281b54ca31c07e6f8109f387567def324e984aa2..244e6bcc160d5e9b50773c4e46d0ecb3a7961a23 100644 (file)
@@ -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
index bcca103aa2a9677355d087d9bbe6e98bded062e7..830e7e742fbf117d31e653fffc3f3020b8d5a0e6 100644 (file)
@@ -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 }
 };
 \f
 /* Initialize the GCC target structure.  */
index c5b034a615d687e4cb37f540e5ed2e16ee92f0f6..075ab47cc0b30844eb5b06a0e0d1ab6c3bf1e2f2 100644 (file)
@@ -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;
index af36ebeb36fa0a486d55f6ec11a0b44483f63f55..4bd1671f99d28bb64f10a54366f08782f8eaa845 100644 (file)
@@ -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 }
 };
 \f
 /* Initialize the GCC target structure.  */
index acdff6c655d05fcdc93079f1d8758812c46981f8..a808bd06133701f89e7da6965b025523c75a099b 100644 (file)
@@ -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);
index 4e70a9b2572c4a72cbe231b370cda6df0e108ec5..d6f7e28c030a13e4680d8bb29a5e70f97ebba25a 100644 (file)
@@ -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 }
 };
 \f
 /* A table describing all the processors GCC knows about; see
index 038a01acb00977eb5e44459c612391dba95f90f1..e8f4c9f36521113b129cfa23567b21931118f208 100644 (file)
@@ -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
index ba03c7a9961b04dfe49cd6ca86f94e096077d155..e4ba5ff8cb6175c00929d170c81e48e3712a1e63 100644 (file)
@@ -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 }
 };
 
 
index 16ff370bb32eee2507afa020082d17a712dc2eee..f57b4f9b33beb15d532a62ef336a9f29cee59d3a 100644 (file)
@@ -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 }
 };
 \f
 /* Limit vector alignments to BIGGEST_ALIGNMENT.  */
index 44165802be4074710e9156b496c2c2dd12969cec..7d1124223d22114ba4a9fe7a996062455f29b729 100644 (file)
@@ -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 }
 };
 \f
 #ifndef TARGET_PROFILE_KERNEL
index b9f6dcc9ded5ed24c2bfb84af8fe3de2f63c23ac..e2532b13b56c254efd1937d2bee75bfbbbbf7d17 100644 (file)
@@ -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 }
 };
 
 
index 995ae0482fb35bda9d45494432b8b2f29c7acee1..215a1f4d3e4c413bcaeba3d88b7553fc45eedc62 100644 (file)
@@ -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 }
 };
 \f
 #ifndef TARGET_PROFILE_KERNEL
index 84032b70d388dc7b040516b63ea5a0bfce0c56c6..071cca5a947da91e38b3d9dc44df6b500bce9069 100644 (file)
@@ -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.  */
index c87f44db29a289426884ee320fc0d2608e6adce7..b87b49e2060e748dd3757df12e1c4779461cb867 100644 (file)
@@ -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
index 85cc77b873a56fc1da002a180a6003ae08d01a8a..a627e8f35998f0ed27144132f95508ca07d3c114 100644 (file)
@@ -329,25 +329,25 @@ static bool sh_can_change_mode_class (machine_mode, machine_mode, reg_class_t);
 \f
 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 }
 };
 \f
 /* Initialize the GCC target structure.  */
index 69c713b875f42e87d80fd354a479f46d298993c7..268ab13e4ee5926d1c135a0a15e8b7c0b8eea01d 100644 (file)
@@ -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.  */
index 890bde9fc0add5a04b9d4e9b5ac6c35a7c6ad392..fc50f9b1aa03d527d4417f045f970050dc83fa07 100644 (file)
@@ -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
 \f
index 84dddbcc5ba597fed1d9b086ea3596ff5477fb4b..c1c79a2656df19e1099de6a8ba6847df93f63996 100644 (file)
@@ -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.  */
index 3a21260fda7c40e692c1480baa0497516248b7d2..bf7269391b501ddb40df366758d9365931306f35 100644 (file)
@@ -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;
index 3d0bbf55e2481ef8b1439bf65e24c57f8ecf246e..a26f5d655fff177fea1c5f2515c04751138fc56e 100644 (file)
@@ -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 }
 };
 \f
 static void
index a8b90019aa9b1e015c1bdc02656abf2f1bfc0f55..4165214f5b78b9d1100e65b6a733e127b20298b7 100644 (file)
@@ -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);
index 37c129d174f7d2dd058a407d8ee618f3ff317c0f..25d7f58ea5816b8d4032e187dcb18ac52009b7da 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-15  Jakub Jelinek  <jakub@redhat.com>
+
+       * tree.c (cxx_attribute_table, std_attribute_table): Swap
+       affects_type_identity and handler fields, adjust comments.
+
 2017-12-15  Nathan Sidwell  <nathan@acm.org>
 
        PR c++/59930
        through into normal folding, otherwise just rebuild x if any op
        changed.
 
-       * g++.dg/warn/pr81675.C: New test.
-
 2017-11-14  Boris Kolpackov  <boris@codesynthesis.com>
 
        * Make-lang.in (c++.install-plugin): Install backend import library.
index 0ae2eff4e1e42fabac05531d3ae43dcce794eb24..5528fa96fb72b5ded7a574a0bea2994cb9f80f34 100644 (file)
@@ -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
index dc3fa2128814e619476892f3e6678f48dcd64e9c..1dcdcbaea7259deee7579242af50391e8c2b47e5 100644 (file)
@@ -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)
index cc8b11879f3d62e110be2ab9548d893e22025f6f..6fab2bc76a8fafe21f335f467117611dcdbbe90a 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-15  Jakub Jelinek  <jakub@redhat.com>
+
+       * f95-lang.c (gfc_attribute_table): Swap affects_type_identity
+       and handler fields, adjust comments.
+
 2017-12-14  Qing Zhao  <qing.zhao@oracle.com>
 
        PR middle_end/79538
index 0ecb2074dcc8482598a3770c03acfb60493157a9..dc9a1ae1cef77f83b8cd27a2609a4381a09c60c1 100644 (file)
@@ -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
index 4823dc25f3e0da56fd531f2314b1db8806d937c2..ce2d407406f65d5b85672bd37e83d2967c4b3a68 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-15  Jakub Jelinek  <jakub@redhat.com>
+
+       * lto-lang.c (lto_attribute_table, lto_format_attribute_table): Swap
+       affects_type_identity and handler fields, adjust comments.
+
 2017-12-07  Richard Sandiford  <richard.sandiford@arm.com>
 
        * lto.c (compare_tree_sccs_1): Compare the new VECTOR_CST flags.
index 89702a4e652a5ad7b4ee32fb51ca0dd5f383db49..2961b7df206657765d8464e12a91c671123d5daa 100644 (file)
@@ -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
index 2a73f82c97f08a8247e89a5969af9f10a87f6f42..9ab04282c4e8da196851e6f66d586b9d1242d7e6 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-15  Jakub Jelinek  <jakub@redhat.com>
+
+       * g++.dg/plugin/attribute_plugin.c (user_attr): Swap
+       affects_type_identity and handler fields, add NULL for exclude.
+
 2017-12-14  Nathan Sidwell  <nathan@acm.org>
 
        PR c++/59930
index 8de5f44cbf8721521fc20b491a63b5c8af1b7feb..8bdaca77086f4e73683f73c5b6400e22f4cbb29c 100644 (file)
@@ -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 */
 
index f225f999fc8c7dd5eb17de03bdcd0f2d49a18072..e25500def953cc05e544710f75bd05b241a986ea 100644 (file)
@@ -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,