Aaron Ballman
2edb89c746
Lex arguments for __has_cpp_attribute and friends as expanded tokens
...
The C and C++ standards require the argument to __has_cpp_attribute and
__has_c_attribute to be expanded ([cpp.cond]p5). It would make little sense
to expand the argument to those operators but not expand the argument to
__has_attribute and __has_declspec, so those were both also changed in this
patch.
Note that it might make sense for the other builtins to also expand their
argument, but it wasn't as clear to me whether the behavior would be correct
there, and so they were left for a future revision.
2021-10-17 07:54:48 -04:00
Richard Smith
4d247e7012
Improve diagnostic for the case when a non-defined function-like macro is used
...
in a preprocessor constant expression.
llvm-svn: 266495
2016-04-16 00:07:09 +00:00
Aaron Ballman
416b127456
Disable __has_cpp_attribute when not compiling in C++ mode. As this feature test macro only supports C++ style attributes, it doesn't apply to code compiled as C code, and can lead to diagnostics when given a scoped attribute.
...
This addresses PR23435.
llvm-svn: 236996
2015-05-11 14:09:50 +00:00
Aaron Ballman
a6f759e423
Modify __has_attribute so that it only looks for GNU-style attributes. Removes the ability to look for generic attributes and keywords via this macro, which has the potential to be a breaking change. However, since there is __has_cpp_attribute and __has_declspec_attribute, and given the limited usefulness of querying a generic attribute name regardless of syntax, this seems like the correct path forward.
...
llvm-svn: 223468
2014-12-05 15:24:55 +00:00
Aaron Ballman
0fa06d879a
__has_attribute now understands target-specific attributes. So when you ask whether an ARM target has the "interrupt" attribute, it will return true for ARM and MSP430 targets, and false for others.
...
llvm-svn: 198897
2014-01-09 22:57:44 +00:00
Richard Smith
baf2912b40
Generalize hack allowing 'const' in __has_attribute (etc) to allow any token
...
with identifier info. This covers most identifier-like entities (other than
the ISO646 keywords).
llvm-svn: 185895
2013-07-09 00:57:56 +00:00
Fariborz Jahanian
7513fa346c
c: small refactoring of checking for __attribute__(const))
...
per Richard's comment.
llvm-svn: 161786
2012-08-13 21:15:02 +00:00
Jean-Daniel Dupas
7598fadd78
Merge __has_attribute tests. Patch by Jonathan Sauer!
...
llvm-svn: 151819
2012-03-01 17:45:53 +00:00
Jean-Daniel Dupas
908f130d58
Implement double underscore names support in __has_attribute
...
llvm-svn: 151809
2012-03-01 14:53:16 +00:00