public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/53528] New: Support C++11 generalized attributes
@ 2012-05-30 13:09 dodji at gcc dot gnu.org
  2012-05-30 13:29 ` [Bug c++/53528] " dodji at gcc dot gnu.org
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: dodji at gcc dot gnu.org @ 2012-05-30 13:09 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528

             Bug #: 53528
           Summary: Support C++11 generalized attributes
    Classification: Unclassified
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: dodji@gcc.gnu.org


G++ should support the generalized attributes feature presented in the N2761
paper at http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug c++/53528] Support C++11 generalized attributes
  2012-05-30 13:09 [Bug c++/53528] New: Support C++11 generalized attributes dodji at gcc dot gnu.org
@ 2012-05-30 13:29 ` dodji at gcc dot gnu.org
  2012-05-30 13:50 ` joseph at codesourcery dot com
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: dodji at gcc dot gnu.org @ 2012-05-30 13:29 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528

Dodji Seketeli <dodji at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2012-05-30
         AssignedTo|unassigned at gcc dot       |dodji at gcc dot gnu.org
                   |gnu.org                     |
     Ever Confirmed|0                           |1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug c++/53528] Support C++11 generalized attributes
  2012-05-30 13:09 [Bug c++/53528] New: Support C++11 generalized attributes dodji at gcc dot gnu.org
  2012-05-30 13:29 ` [Bug c++/53528] " dodji at gcc dot gnu.org
@ 2012-05-30 13:50 ` joseph at codesourcery dot com
  2012-06-25  8:12 ` ethouris at gmail dot com
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: joseph at codesourcery dot com @ 2012-05-30 13:50 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528

--- Comment #1 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2012-05-30 13:47:38 UTC ---
Note that the syntactic binding of C++11 attributes is different from that 
of GNU attributes in various cases, so the front end will need to track 
separately what attributes of each syntax have been used in various 
places.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug c++/53528] Support C++11 generalized attributes
  2012-05-30 13:09 [Bug c++/53528] New: Support C++11 generalized attributes dodji at gcc dot gnu.org
  2012-05-30 13:29 ` [Bug c++/53528] " dodji at gcc dot gnu.org
  2012-05-30 13:50 ` joseph at codesourcery dot com
@ 2012-06-25  8:12 ` ethouris at gmail dot com
  2012-06-25  8:33 ` redi at gcc dot gnu.org
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: ethouris at gmail dot com @ 2012-06-25  8:12 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528

Michal Malecki <ethouris at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ethouris at gmail dot com

--- Comment #2 from Michal Malecki <ethouris at gmail dot com> 2012-06-25 08:11:16 UTC ---
If this feature is going to be used also for extended GNU attributes, it can be
done via a special extension:

[[gnu init_priority(200)]]
[[gnu format(printf, 2, 3)]]

would be same as:

__attribute__ ((init_priority (200)))
__attribute__ ((format(printf, 2, 3)))

Some standard attributes can be also implemented as alias to existing gnu
attributes, for example [[gnu noreturn]] would be the same as [[noreturn]].

Currently the only standard attributes are "noreturn" and "carries_dependency".
They don't get any arguments, so I don't think the difference to current
attribute syntax matters.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug c++/53528] Support C++11 generalized attributes
  2012-05-30 13:09 [Bug c++/53528] New: Support C++11 generalized attributes dodji at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2012-06-25  8:12 ` ethouris at gmail dot com
@ 2012-06-25  8:33 ` redi at gcc dot gnu.org
  2012-07-26 15:27 ` dodji at gcc dot gnu.org
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: redi at gcc dot gnu.org @ 2012-06-25  8:33 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-06-25 08:32:29 UTC ---
There's no need for an extension, the grammar allows
[[gnu::init_priority(200)]]


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug c++/53528] Support C++11 generalized attributes
  2012-05-30 13:09 [Bug c++/53528] New: Support C++11 generalized attributes dodji at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2012-06-25  8:33 ` redi at gcc dot gnu.org
@ 2012-07-26 15:27 ` dodji at gcc dot gnu.org
  2012-07-26 20:18 ` ethouris at gmail dot com
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: dodji at gcc dot gnu.org @ 2012-07-26 15:27 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528

--- Comment #4 from Dodji Seketeli <dodji at gcc dot gnu.org> 2012-07-26 15:27:17 UTC ---
A candidate implementation patch for this has been posted to
http://gcc.gnu.org/ml/gcc-patches/2012-07/msg01348.html

@Joseph:
Thank you for the note.  I believe the patch handles this, unless I have
forgotten things.

@Michal Malecki / Jonathan Wakely
The scoped attributes syntax [[gnu::priority(200)]] is now supported.  The
patch has put all the GNU attributes in the "gnu" namespace by default.  So now
whenever one writes __attribute__((priority(200))), the priority attribute is
looked up from or put into the "gnu" namespace.

We'll see what comes out of the discussion that arises from the patch
submission.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug c++/53528] Support C++11 generalized attributes
  2012-05-30 13:09 [Bug c++/53528] New: Support C++11 generalized attributes dodji at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2012-07-26 15:27 ` dodji at gcc dot gnu.org
@ 2012-07-26 20:18 ` ethouris at gmail dot com
  2012-10-08  9:29 ` dodji at gcc dot gnu.org
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: ethouris at gmail dot com @ 2012-07-26 20:18 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528

--- Comment #5 from Michal Malecki <ethouris at gmail dot com> 2012-07-26 20:18:36 UTC ---
Looks nice. Is that a big deal if you also make a standard [[noreturn]]
attribute simply an alias to [[gnu::noreturn]]? As far as I know the standard,
they should behave exactly the same way.

Another thing is that I think this should work, according to the standard:

void quit [[gnu::noreturn]] () { throw 0; }

And it doesn't with this patch. Of course, [[gnu::noreturn]] void quit()...
works and is more intuitive, but both are required by the standard. I guess the
difference is when you'd do this:

int quit [[noreturn]](), pass(); // pass does return!

while here both are noreturn:

[[noreturn]] int quit(), pass();


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug c++/53528] Support C++11 generalized attributes
  2012-05-30 13:09 [Bug c++/53528] New: Support C++11 generalized attributes dodji at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2012-07-26 20:18 ` ethouris at gmail dot com
@ 2012-10-08  9:29 ` dodji at gcc dot gnu.org
  2012-10-08 12:07 ` dodji at seketeli dot org
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: dodji at gcc dot gnu.org @ 2012-10-08  9:29 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528

--- Comment #6 from Dodji Seketeli <dodji at gcc dot gnu.org> 2012-10-08 09:29:13 UTC ---
Author: dodji
Date: Mon Oct  8 09:29:05 2012
New Revision: 192199

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=192199
Log:
PR c++/53528 C++11 attribute support

This patch implements the c++-11 generalized attributes, described in
the N2761 paper[1].

The idea is to modify the front-end to accept the new attribute syntax
(including alignas expressions) and to build an internal
representation similar to the one we already have for GNU attributes.

This lets us re-use our existing GNU attribute mechanisms to support
the generalized c++11 attributes.

The patch does change the existing internal representation to support
scoped attribute (aka attributes with namespaces), which is a concept
that doesn't exist in GNU attributes.  I have thus put all existing
GNU extension attributes into the "gnu" namespace.  For instance, in
C++-11, the "unused" attribute would be represented as
"[[gnu::unused]]".  Because there is no syntax for scoped attributes
in C, writting "__attribute__((unused))" unconditionnally refers to
the "unused" attribute in the "gnu" namespace.

Note that this patch follows a conservative understanding of the
specification by disallowing attributes appertaining to types, unless
they apply to a type definition.

Tested on x86_64-unknown-linux-gnu and powerpc64-unknown-linux-gnu.

[1]: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf

gcc/
    * plugin.h (register_scoped_attributes): Declare new function.
    * tree.h (enu attribute_flags::ATTR_FLAG_CXX_11): New flag.
    (lookup_scoped_attribute_spec, cxx_11_attribute_p)
    (get_attribute_name, get_attribute_namespace): Declare new functions.
    (struct attribute_spec): Remove const qualifier from the members.
    * tree.c (comp_type_attributes, private_lookup_attribute)
    (lookup_ident_attribute, remove_attribute, merge_attribute)
    (attribute_hash_list, attribute_list_contained): Use
    get_attribute_name.
    * attribs.c (decl_attributes): Don't crash on error_mark_node.
    Forbid c++11 attributes appertaining to type-specifiers.
    (attribute_hash): Remove global variable.
    (attributes_table): New global variable.
    (find_attribute_namespace, register_scoped_attribute): New static
    functions.
    (register_scoped_attributes, lookup_scoped_attribute_spec)
    (cxx11_attribute_p, get_attribute_name, get_attribute_namespace):
    New public functions.
    (init_attributes): Register all the GNU attributes into the "gnu"
    namespace.
    (register_attribute): Use register_scoped_attribute to register
    the attribute into the "gnu" namespace.
    (lookup_attribute_spec): Use lookup_scoped_attribute_spec to
    lookup the attribute in the "gnu" namespace.
    (decl_attributes): Use new get_attribute_namespace and
    lookup_scoped_attribute_spec to consider attribute namespaces when
    looking up attributes.  When operating in c++-11 mode, pass flag
    ATTR_FLAG_CXX11 to the spec handler.

gcc/c-family/

    * c-common.h (bitfield_p, cxx_fundamental_alignment_p): Declare
    new functions.
    * c-common.c (check_cxx_fundamental_alignment_constraints): New
    static function.
    (handle_aligned_attribute): In choose strictest alignment
    among many.  Use new check_cxx_fundamental_alignment_constraints.
    (handle_transparent_union_attribute): In c++11 attribute syntax,
    don't look through typedefs.

gcc/cp/

    * cp-tree.h (enum cpp0x_warn_str::CPP0X_ATTRIBUTES): New member.
    (enum cp_decl_spec::ds_std_attribute): New enumerator.
    (struct cp_decl_specifier_seq::std_attributes): New field.
    (cxx_alignas_expr, warn_misplaced_attr_for_class_type): Declare
    new functions.
    (check_tag_decl): Take an extra parameter for explicit
    instantiations.
    * decl.c (warn_misplaced_attr_for_class_type): Extract from ...
    (check_tag_decl): ... here.  Add check for c++11 attributes being
    applied to an explicit instantiation.  Take an extra parameter for
    explicit instantiations.
    (grokdeclarator): Make sure a c++11 attribute after an array
    declarator appertains to the array, an attribute after a function
    declarator appertains to the function type, an attribute after a
    declarator-id appertains to the entity being declared, and an
    attribute after a pointer declarator appertains to the pointer.
    * decl2.c (is_late_template_attribute): Use get_attribute_name.
    * error.c (maybe_warn_cpp0x): Support
    CPP0X_GENERALIZED_ATTRIBUTES.
    * parser.c (cp_next_tokens_can_be_attribute_p)
    (cp_next_tokens_can_be_gnu_attribute_p)
    (cp_next_tokens_can_be_std_attribute_p)
    (cp_nth_tokens_can_be_attribute_p)
    (cp_nth_tokens_can_be_gnu_attribute_p)
    (cp_nth_tokens_can_be_std_attribute_p)
    (cp_parser_gnu_attribute_list, cp_parser_std_attribute)
    (cp_parser_std_attribute_spec, cp_parser_std_attribute_spec_seq)
    (cp_parser_attributes_opt, cp_parser_std_attribute_list): New
    static functions.
    (cp_parser_gnu_attributes_opt): Replace cp_parser_attributes_opt.
    (cp_parser_gnu_attribute_list): Replace cp_parser_attribute_list.
    (cp_parser_postfix_expression): Disallow "[[" tokens here.
    (cp_parser_label_for_labeled_statement): Use take an extra
    parameter for attributes.
    (cp_parser_block_declaration): Use
    cp_nth_tokens_can_be_std_attribute_p here.
    (cp_parser_decl_specifier_seq): Likewise.  Store C++11 attributes
    that appears in in decl specifiers in
cp_decl_specifier_seq::std_attributes.
    declaration.  Emit proper warning about misplaced c++11 attributes
    for class type.
    (cp_parser_explicit_instantiation): Adjust call to check_tag_decl.
    (cp_parser_init_declarator):  Parsing attributes here is no more a
    GNU extension in c++-11.
    (cp_parser_type_specifier_seq): Use
    cp_next_tokens_can_be_attribute_p.
    (cp_parser_direct_declarator): Likewise.  Hang c++11 attributes
    following the declarator to its syntactic construct.  It'll later
    be applied to the proper appertaining entity by grokdeclarator.
    (cp_parser_ptr_operator): Likewise.
    (make_declarator): Initialize cp_declarator::std_attribute.
    (make_pointer_declarator, make_reference_declarator)
    (make_ptrmem_declarator, cp_parser_make_indirect_declarator): Take
    attributes that appertain to the pointer/reference in argument.
    (cp_parser_ptr_operator): Take an out parameter for c++11
    attributes.  Update comments.
    (cp_parser_new_declarator_opt)
    (cp_parser_conversion_declarator_opt): Adjust.
    (cp_parser_declarator): Likewise.  Handle C++11 attributes.
    Rename attributes to gnu_attribute for better legibility.
    (cp_parser_simple_declaration): Update comment.
    (cp_parser_class_specifier_1): Parse GNU attributes specifically
    (cp_parser_enum_specifier): Accept only gnu attributes after the
    specifier.
    (cp_parser_member_declaration): Don't clear attributes -- intended
    for the entity being declared -- too early because check_tag_decl
    needs them.
    (cp_parser_statement): Update comment.  Parse optional c++11
    attributes at the beginning of the relevant kind of statements and
    ignore them, for now, unless when calling
    cp_parser_label_for_labeled_statement.
    (cp_parser_label_for_labeled_statement): Take c++11 attributes
    in parameter.
    * semantics.c (potential_constant_expression_1): Likewise.
    * typeck.c (fundamental_alignment_p, cxx_alignas_expr): New public
    functions.

gcc/testsuite/

    * g++.dg/cpp0x/gen-attrs-1.C: New test.
    * g++.dg/cpp0x/gen-attrs-2.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-2-1.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-3.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-4.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-5.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-6.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-7.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-8.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-9.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-10.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-11.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-12.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-13.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-14.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-15.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-16.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-17.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-18.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-19.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-20.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-21.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-22.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-23.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-24.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-25.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-26.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-27.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-28.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-29.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-30.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-31.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-32.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-33.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-34.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-35.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-36.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-36-1.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-37.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-38.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-39.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-39-1.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-40.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-41.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-42.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-43.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-44.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-45.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-46.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-47.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-47-1.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-48.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-49.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-50.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-51.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-52.C: Likewise.
    * g++.dg/cpp0x/gen-attrs-53.C: Likewise.

Added:
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-1.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-10.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-11.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-12.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-13.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-14.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-15.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-16.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-17.2.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-17.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-18.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-19.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-2-1.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-2.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-20.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-21.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-22.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-23.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-24.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-25.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-26.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-27.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-28.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-29.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-3.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-30.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-31.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-32.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-33.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-34.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-35.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-36-1.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-36.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-37.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-38.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-39-1.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-39.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-40.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-41.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-42.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-43.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-44.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-45.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-46.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-47-1.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-47.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-48.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-49.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-5.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-50.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-51.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-52.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-53.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-6.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-7.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-8.C
    trunk/gcc/testsuite/g++.dg/cpp0x/gen-attrs-9.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/attribs.c
    trunk/gcc/c-family/ChangeLog
    trunk/gcc/c-family/c-common.c
    trunk/gcc/c-family/c-common.h
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/cp-tree.h
    trunk/gcc/cp/decl.c
    trunk/gcc/cp/decl2.c
    trunk/gcc/cp/error.c
    trunk/gcc/cp/parser.c
    trunk/gcc/cp/typeck.c
    trunk/gcc/plugin.h
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree.c
    trunk/gcc/tree.h


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug c++/53528] Support C++11 generalized attributes
  2012-05-30 13:09 [Bug c++/53528] New: Support C++11 generalized attributes dodji at gcc dot gnu.org
                   ` (6 preceding siblings ...)
  2012-10-08  9:29 ` dodji at gcc dot gnu.org
@ 2012-10-08 12:07 ` dodji at seketeli dot org
  2012-10-08 12:11 ` dodji at gcc dot gnu.org
  2023-01-19  5:11 ` pinskia at gcc dot gnu.org
  9 siblings, 0 replies; 11+ messages in thread
From: dodji at seketeli dot org @ 2012-10-08 12:07 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528

--- Comment #7 from dodji at seketeli dot org <dodji at seketeli dot org> 2012-10-08 12:06:48 UTC ---
Sorry Michal for getting to your comment this late.

"ethouris at gmail dot com" <gcc-bugzilla@gcc.gnu.org> a écrit:

> Looks nice. Is that a big deal if you also make a standard [[noreturn]]
> attribute simply an alias to [[gnu::noreturn]]?

The patch as it is focused on bringing in the core support for c++11
attributes.  Supporting some attributes in particular is left as a
follow-up to come up later.  An exception to this is that the patch also
supports alignas expressions, but that is just because it was needed to
complete the support of the attributes syntax.

> As far as I know the standard, they should behave exactly the same
> way.

I haven't looked at the details yet, but I think you are correct.

>
> Another thing is that I think this should work, according to the standard:
>
> void quit [[gnu::noreturn]] () { throw 0; }
>
> And it doesn't with this patch.

I think it works with the version of the patch that I just committed.
Or maybe I don't understand what you mean by "doesn't work".

Thanks for caring.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug c++/53528] Support C++11 generalized attributes
  2012-05-30 13:09 [Bug c++/53528] New: Support C++11 generalized attributes dodji at gcc dot gnu.org
                   ` (7 preceding siblings ...)
  2012-10-08 12:07 ` dodji at seketeli dot org
@ 2012-10-08 12:11 ` dodji at gcc dot gnu.org
  2023-01-19  5:11 ` pinskia at gcc dot gnu.org
  9 siblings, 0 replies; 11+ messages in thread
From: dodji at gcc dot gnu.org @ 2012-10-08 12:11 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528

Dodji Seketeli <dodji at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED

--- Comment #8 from Dodji Seketeli <dodji at gcc dot gnu.org> 2012-10-08 12:10:26 UTC ---
Applied to trunk (4.8).


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug c++/53528] Support C++11 generalized attributes
  2012-05-30 13:09 [Bug c++/53528] New: Support C++11 generalized attributes dodji at gcc dot gnu.org
                   ` (8 preceding siblings ...)
  2012-10-08 12:11 ` dodji at gcc dot gnu.org
@ 2023-01-19  5:11 ` pinskia at gcc dot gnu.org
  9 siblings, 0 replies; 11+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-01-19  5:11 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |4.8.0

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2023-01-19  5:11 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-30 13:09 [Bug c++/53528] New: Support C++11 generalized attributes dodji at gcc dot gnu.org
2012-05-30 13:29 ` [Bug c++/53528] " dodji at gcc dot gnu.org
2012-05-30 13:50 ` joseph at codesourcery dot com
2012-06-25  8:12 ` ethouris at gmail dot com
2012-06-25  8:33 ` redi at gcc dot gnu.org
2012-07-26 15:27 ` dodji at gcc dot gnu.org
2012-07-26 20:18 ` ethouris at gmail dot com
2012-10-08  9:29 ` dodji at gcc dot gnu.org
2012-10-08 12:07 ` dodji at seketeli dot org
2012-10-08 12:11 ` dodji at gcc dot gnu.org
2023-01-19  5:11 ` pinskia at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).