On Fri, Dec 08, 2017 at 11:32:54AM +0100, Rainer Orth wrote: > Jakub Jelinek <ja...@redhat.com> writes: > > > On Fri, Dec 08, 2017 at 10:43:58AM +0100, Rainer Orth wrote: > >> The line numbers are completely misleading, unfortunately. Hadn't > >> SUBTARGET_ATTRIBUTE_TABLE been used at the end of the (very short) > >> sparc_attribute_table, I wouldn't have seen what was wrong. > >> > >> The following patch fixes the problem, installed on mainline after > >> i386-pc-solaris2.11 and sparc-sun-solaris2.11 bootstraps completed > >> without regressions. > >> > >> However, there are two more SUBTARGET_ATTRIBUTE_TABLE defines: > >> > >> gcc/config/darwin.h:#define SUBTARGET_ATTRIBUTE_TABLE \ > >> gcc/config/i386/cygming.h:#define SUBTARGET_ATTRIBUTE_TABLE \ > > > > I'll deal with this. > > This is what I'm currently testing with an x86_64-apple-darwin11.4.2 > bootstrap. Ok if it passes?
I've committed this instead, while only darwin.h and cygming.h were left broken, the comments haven't been adjusted in many more cases. BTW, we should swap handler and affects_type_identity fields at some point, 3 bools, then pointer, then bool, then pointer needs quite a lot of padding. 2017-12-08 Jakub Jelinek <ja...@redhat.com> * config/arc/arc.c (arc_attribute_table): Add exclusions to the comment. * config/avr/avr.c (avr_attribute_table): Likewise. * config/msp430/msp430.c (msp430_attribute_table): Likewise. * config/rl78/rl78.c (rl78_attribute_table): Likewise. * config/nds32/nds32.c (nds32_attribute_table): Likewise. * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Initialize new member of struct attribute_spec. * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise. ada/ * gcc-interface/utils.c (gnat_internal_attribute_table): Add exclusions to the comment. brig/ * brig-lang.c (brig_attribute_table): Fix up comment. --- gcc/config/arc/arc.c.jj 2017-12-07 18:05:03.000000000 +0100 +++ gcc/config/arc/arc.c 2017-12-08 11:20:24.605501619 +0100 @@ -218,7 +218,7 @@ static tree arc_handle_fndecl_attribute const struct attribute_spec arc_attribute_table[] = { /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity } */ + affects_type_identity, exclusions } */ { "interrupt", 1, 1, true, false, false, arc_handle_interrupt_attribute, true, NULL }, /* Function calls made to this symbol must be done indirectly, because --- gcc/config/avr/avr.c.jj 2017-12-07 18:05:02.000000000 +0100 +++ gcc/config/avr/avr.c 2017-12-08 11:24:32.270391537 +0100 @@ -9875,7 +9875,7 @@ static const struct attribute_spec avr_attribute_table[] = { /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity } */ + 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, --- gcc/config/darwin.h.jj 2017-11-28 12:11:41.000000000 +0100 +++ gcc/config/darwin.h 2017-12-08 11:18:05.866243854 +0100 @@ -741,11 +741,11 @@ extern GTY(()) section * 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 } */ \ + affects_type_identity, exclusions } */ \ { "apple_kext_compatibility", 0, 0, false, true, false, \ - darwin_handle_kext_attribute, false }, \ + darwin_handle_kext_attribute, false, NULL }, \ { "weak_import", 0, 0, true, false, false, \ - darwin_handle_weak_import_attribute, false } + darwin_handle_weak_import_attribute, false, NULL } /* Make local constant labels linker-visible, so that if one follows a weak_global constant, ld64 will be able to separate the atoms. */ --- gcc/config/i386/cygming.h.jj 2017-10-30 12:02:35.000000000 +0100 +++ gcc/config/i386/cygming.h 2017-12-08 11:25:12.372887945 +0100 @@ -448,9 +448,9 @@ do { \ #define SUBTARGET_ATTRIBUTE_TABLE \ { "selectany", 0, 0, true, false, false, ix86_handle_selectany_attribute, \ - false } + false, NULL } /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity } */ + affects_type_identity, exclusions } */ /* mcount() does not need a counter variable. */ #undef NO_PROFILE_COUNTERS --- gcc/config/msp430/msp430.c.jj 2017-12-07 18:05:03.000000000 +0100 +++ gcc/config/msp430/msp430.c 2017-12-08 11:26:47.634691684 +0100 @@ -2050,7 +2050,7 @@ msp430_data_attr (tree * node, const struct attribute_spec msp430_attribute_table[] = { /* Name min_num_args type_req, affects_type_identity - max_num_args, fn_type_req + 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 }, --- gcc/config/rl78/rl78.c.jj 2017-12-07 18:05:03.000000000 +0100 +++ gcc/config/rl78/rl78.c 2017-12-08 11:27:25.024222160 +0100 @@ -858,7 +858,7 @@ rl78_handle_saddr_attribute (tree * node const struct attribute_spec rl78_attribute_table[] = { /* Name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity. */ + 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, --- gcc/config/nds32/nds32.c.jj 2017-12-07 18:05:02.000000000 +0100 +++ gcc/config/nds32/nds32.c 2017-12-08 11:27:54.160856273 +0100 @@ -83,7 +83,8 @@ static const char * const nds32_intrinsi 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 } */ + function_type_required, handler, affects_type_identity, + exclusions } */ /* The interrupt vid: [0-63]+ (actual vector number starts from 9 to 72). */ { "interrupt", 1, 64, false, false, false, NULL, false, NULL }, --- gcc/ada/gcc-interface/utils.c.jj 2017-12-07 18:04:59.000000000 +0100 +++ gcc/ada/gcc-interface/utils.c 2017-12-08 11:29:11.796881349 +0100 @@ -108,7 +108,7 @@ static tree fake_attribute_handler (tree const struct attribute_spec gnat_internal_attribute_table[] = { /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - affects_type_identity } */ + affects_type_identity, exclusions } */ { "const", 0, 0, true, false, false, handle_const_attribute, false, NULL }, { "nothrow", 0, 0, true, false, false, handle_nothrow_attribute, --- gcc/brig/brig-lang.c.jj 2017-12-07 18:04:55.000000000 +0100 +++ gcc/brig/brig-lang.c 2017-12-08 12:20:40.475998143 +0100 @@ -448,7 +448,7 @@ brig_localize_identifier (const char *id const struct attribute_spec brig_attribute_table[] = { /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, - do_diagnostic } */ + affects_type_identity, exclusions } */ { "leaf", 0, 0, true, false, false, handle_leaf_attribute, false, NULL }, { "const", 0, 0, true, false, false, Jakub