cpplib.h (cpp_callbacks): Add has_attribute.
authorEdward Smith-Rowland <3dw4rd@verizon.net>
Mon, 10 Nov 2014 15:53:12 +0000 (15:53 +0000)
committerEdward Smith-Rowland <emsr@gcc.gnu.org>
Mon, 10 Nov 2014 15:53:12 +0000 (15:53 +0000)
commit42fd12b1e7fc50183bcf62861aae81301a9efbcf
treecdf2ab35de7a1da1bcda63af97f127dea644c2ce
parent6d64f20c8d50ce563f7b709593ac1229f2146c61
cpplib.h (cpp_callbacks): Add has_attribute.

libcpp:

2014-11-10  Edward Smith-Rowland  <3dw4rd@verizon.net>

* include/cpplib.h (cpp_callbacks): Add has_attribute.
* internal.h (lexer_state): Add in__has_attribute__.
* directives.c (lex_macro_node): Prevent use of __has_attribute__
as a macro.
* expr.c (parse_has_attribute): New function; (eval_token): Look for
__has_attribute__ and route to parse_has_attribute.
* identifiers.c (_cpp_init_hashtable): Initialize n__has_attribute__.
* pch.c (cpp_read_state): Initialize n__has_attribute__.
* traditional.c (enum ls): Add ls_has_attribute, ls_has_attribute_close;
(_cpp_scan_out_logical_line): Attend to __has_attribute__.

gcc/c-family:

2014-11-10  Edward Smith-Rowland  <3dw4rd@verizon.net>

* c-cppbuiltin.c (__has_attribute, __has_cpp_attribute): New macros;
(__cpp_rtti, __cpp_exceptions): New macros for C++98;
(__cpp_range_based_for, __cpp_initializer_lists,
__cpp_delegating_constructors, __cpp_nsdmi,
__cpp_inheriting_constructors, __cpp_ref_qualifiers): New macros
for C++11; (__cpp_attribute_deprecated): Remove in favor of
__has_cpp_attribute.
* c-lex.c (cb_has_attribute): New callback CPP function;
(init_c_lex): Set has_attribute callback.

gcc/testsuite:

2014-11-10  Edward Smith-Rowland  <3dw4rd@verizon.net>

* g++.dg/cpp1y/feat-cxx11.C: Test new feature macros for C++98
and C++11; Test existence of __has_cpp_attribute;  Test C++11
attributes.
* g++.dg/cpp1y/feat-cxx11-neg.C: Ditto.
* g++.dg/cpp1y/feat-cxx14.C: Ditto and test for C++14 attributes.
* g++.dg/cpp1y/feat-cxx98.C: Test new feature macros for C++98.
* g++.dg/cpp1y/feat-cxx98-neg.C: Ditto.
* g++.dg/cpp1y/feat-neg.C: Test that __cpp_rtti, _cpp_exceptions
will be undefined for -fno-rtti -fno-exceptions.

From-SVN: r217292
18 files changed:
gcc/c-family/ChangeLog
gcc/c-family/c-cppbuiltin.c
gcc/c-family/c-lex.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp1y/feat-cxx11-neg.C
gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C
gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C
gcc/testsuite/g++.dg/cpp1y/feat-cxx98-neg.C
gcc/testsuite/g++.dg/cpp1y/feat-cxx98.C
gcc/testsuite/g++.dg/cpp1y/feat-neg.C [new file with mode: 0644]
libcpp/ChangeLog
libcpp/directives.c
libcpp/expr.c
libcpp/identifiers.c
libcpp/include/cpplib.h
libcpp/internal.h
libcpp/pch.c
libcpp/traditional.c