Objective-C++ : Allow prefix attrs on linkage specs.
authorIain Sandoe <iain@sandoe.co.uk>
Mon, 26 Oct 2020 22:12:22 +0000 (22:12 +0000)
committerIain Sandoe <iain@sandoe.co.uk>
Wed, 11 Nov 2020 20:43:31 +0000 (20:43 +0000)
commit9227f81db7a0b38dd14ce4b48ca50c33cf8d5e1c
tree9e4363f328b7d4facf4a79492cd0569c87f3116a
parentb1c9b3c3408c1ec8043f9b9e1a148f84bb7f3b25
Objective-C++ : Allow prefix attrs on linkage specs.

For Objective-C++, this combines prefix attributes from before and
after top level linkage specs.  The "reference implementation" for
Objective-C++ allows this, and system headers depend on it.

e.g.

__attribute__((__deprecated__))
extern "C" __attribute__((__visibility__("default")))
@interface MyClass
...
@end

Would consider the list of prefix attributes to the interface for
MyClass to include both the visibility and deprecated ones.

When we are compiling regular C++, this emits a warning and discards
any prefix attributes before a linkage spec.

gcc/cp/ChangeLog:

* parser.c (cp_parser_declaration): Unless we are compiling for
Ojective-C++, warn about and discard any attributes that prefix
a linkage specification.
gcc/cp/parser.c