Implement C++17 [[nodiscard]] attribute

Programming / Compilers / GCC - jason [138bc75d-0d04-0410-961f-82ee72b054a4] - 28 April 2016 14:01 UTC

PR c++/38172 PR c++/54379 gcc/c-family/
- c-lex.c (c_common_has_attribute): Handle nodiscard. gcc/cp/
- parser.c (cp_parser_std_attribute): Handle [[nodiscard]].
- tree.c (handle_nodiscard_attribute): New. (cxx_attribute_table): Add [[nodiscard]].
- cvt.c (cp_get_fndecl_from_callee, cp_get_callee_fndecl): New. (maybe_warn_nodiscard): New. (convert_to_void): Call it.

ddd2a3d Implement C++17 [[nodiscard]] attribute.
gcc/c-family/ChangeLog | 4 +
gcc/c-family/c-lex.c | 3 +-
gcc/cp/ChangeLog | 10 +
gcc/cp/cp-tree.h | 2 +
gcc/cp/cvt.c | 103 +++++++++-
gcc/cp/tree.c | 26 +++
.../c-c++-common/attr-warn-unused-result.c | 188 ++++++++++++++++++
gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C | 8 +
gcc/testsuite/g++.dg/cpp1z/nodiscard1.C | 8 +
gcc/testsuite/g++.dg/cpp1z/nodiscard2.C | 10 +
gcc/testsuite/g++.dg/cpp1z/nodiscard3.C | 203 ++++++++++++++++++++
gcc/testsuite/g++.dg/warn/Wunused-result-2.C | 21 ++
gcc/testsuite/g++.dg/warn/unused-result1.C | 2 +-
gcc/testsuite/gcc.dg/attr-warn-unused-result.c | 188 ------------------
14 files changed, 585 insertions(+), 191 deletions(-)

Upstream: gcc.gnu.org


  • Share