https://gcc.gnu.org/g:5c8fe56a4ca1ed4df2a26cac152fd86af0ebc713
commit r16-5113-g5c8fe56a4ca1ed4df2a26cac152fd86af0ebc713 Author: Jakub Jelinek <[email protected]> Date: Mon Nov 10 11:36:42 2025 +0100 c++: Diagnose #define/#undef indeterminate While working on CWG3053 I've noticed I forgot to enable diagnostics on #define indeterminate or #undef indeterminate now that it is handled as valid C++26 attribute. 2025-11-10 Jakub Jelinek <[email protected]> gcc/cp/ * lex.cc (cxx_init): For C++26 call cpp_warn on "indeterminate". gcc/testsuite/ * g++.dg/warn/Wkeyword-macro-1.C: Expect diagnostics on define/undef of indeterminate. * g++.dg/warn/Wkeyword-macro-2.C: Likewise. * g++.dg/warn/Wkeyword-macro-4.C: Likewise. * g++.dg/warn/Wkeyword-macro-5.C: Likewise. * g++.dg/warn/Wkeyword-macro-7.C: Likewise. * g++.dg/warn/Wkeyword-macro-8.C: Likewise. Diff: --- gcc/cp/lex.cc | 1 + gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C | 2 +- gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C | 2 +- gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C | 2 +- gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C | 2 +- gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C | 2 +- gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C | 2 +- 7 files changed, 7 insertions(+), 6 deletions(-) diff --git a/gcc/cp/lex.cc b/gcc/cp/lex.cc index 3bc48659a8c7..9a6d56309fd3 100644 --- a/gcc/cp/lex.cc +++ b/gcc/cp/lex.cc @@ -422,6 +422,7 @@ cxx_init (void) { cpp_warn (parse_in, "replaceable_if_eligible"); cpp_warn (parse_in, "trivially_relocatable_if_eligible"); + cpp_warn (parse_in, "indeterminate"); } } diff --git a/gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C b/gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C index f47de7af26a2..6aee9ebb6096 100644 --- a/gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C +++ b/gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C @@ -103,7 +103,7 @@ #define carries_dependency 1 #define deprecated 1 // { dg-error "keyword 'deprecated' defined as macro" "" { target c++26 } } #define fallthrough 1 // { dg-error "keyword 'fallthrough' defined as macro" "" { target c++26 } } -#define indeterminate 1 +#define indeterminate 1 // { dg-error "keyword 'indeterminate' defined as macro" "" { target c++26 } } #define likely 1 // { dg-error "keyword 'likely' defined as macro" "" { target c++26 } } #define maybe_unused 1 // { dg-error "keyword 'maybe_unused' defined as macro" "" { target c++26 } } #define nodiscard 1 // { dg-error "keyword 'nodiscard' defined as macro" "" { target c++26 } } diff --git a/gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C b/gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C index b1a9aa2cd6a0..dd494a15eec2 100644 --- a/gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C +++ b/gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C @@ -103,7 +103,7 @@ #define carries_dependency 1 #define deprecated 1 // { dg-warning "keyword 'deprecated' defined as macro" "" { target c++26 } } #define fallthrough 1 // { dg-warning "keyword 'fallthrough' defined as macro" "" { target c++26 } } -#define indeterminate 1 +#define indeterminate 1 // { dg-warning "keyword 'indeterminate' defined as macro" "" { target c++26 } } #define likely 1 // { dg-warning "keyword 'likely' defined as macro" "" { target c++26 } } #define maybe_unused 1 // { dg-warning "keyword 'maybe_unused' defined as macro" "" { target c++26 } } #define nodiscard 1 // { dg-warning "keyword 'nodiscard' defined as macro" "" { target c++26 } } diff --git a/gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C b/gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C index 4fde3ae36d18..1b87f6687dc4 100644 --- a/gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C +++ b/gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C @@ -103,7 +103,7 @@ #undef carries_dependency #undef deprecated // { dg-error "undefining keyword 'deprecated'" "" { target c++26 } } #undef fallthrough // { dg-error "undefining keyword 'fallthrough'" "" { target c++26 } } -#undef indeterminate +#undef indeterminate // { dg-error "undefining keyword 'indeterminate'" "" { target c++26 } } #undef likely #undef maybe_unused // { dg-error "undefining keyword 'maybe_unused'" "" { target c++26 } } #undef nodiscard // { dg-error "undefining keyword 'nodiscard'" "" { target c++26 } } diff --git a/gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C b/gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C index 13b3b68386d8..6349b9f1f55f 100644 --- a/gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C +++ b/gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C @@ -103,7 +103,7 @@ #undef carries_dependency #undef deprecated // { dg-warning "undefining keyword 'deprecated'" "" { target c++26 } } #undef fallthrough // { dg-warning "undefining keyword 'fallthrough'" "" { target c++26 } } -#undef indeterminate +#undef indeterminate // { dg-warning "undefining keyword 'indeterminate'" "" { target c++26 } } #undef likely #undef maybe_unused // { dg-warning "undefining keyword 'maybe_unused'" "" { target c++26 } } #undef nodiscard // { dg-warning "undefining keyword 'nodiscard'" "" { target c++26 } } diff --git a/gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C b/gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C index 30a2c8d50e1f..3edf57e00885 100644 --- a/gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C +++ b/gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C @@ -103,7 +103,7 @@ #define carries_dependency 1 // { dg-warning "keyword 'carries_dependency' defined as macro" "" { target { c++11 && c++23_down } } } #define deprecated 1 // { dg-warning "keyword 'deprecated' defined as macro" "" { target c++14 } } #define fallthrough 1 // { dg-warning "keyword 'fallthrough' defined as macro" "" { target c++17 } } -#define indeterminate 1 +#define indeterminate 1 // { dg-warning "keyword 'indeterminate' defined as macro" "" { target c++26 } } #define likely 1 // { dg-warning "keyword 'likely' defined as macro" "" { target c++20 } } #define maybe_unused 1 // { dg-warning "keyword 'maybe_unused' defined as macro" "" { target c++17 } } #define nodiscard 1 // { dg-warning "keyword 'nodiscard' defined as macro" "" { target c++17 } } diff --git a/gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C b/gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C index b9b365e246c8..00efe68bbe43 100644 --- a/gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C +++ b/gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C @@ -103,7 +103,7 @@ #undef carries_dependency // { dg-warning "undefining keyword 'carries_dependency'" "" { target { c++11 && c++23_down } } } #undef deprecated // { dg-warning "undefining keyword 'deprecated'" "" { target c++14 } } #undef fallthrough // { dg-warning "undefining keyword 'fallthrough'" "" { target c++17 } } -#undef indeterminate +#undef indeterminate // { dg-warning "undefining keyword 'indeterminate'" "" { target c++26 } } #undef likely #undef maybe_unused // { dg-warning "undefining keyword 'maybe_unused'" "" { target c++17 } } #undef nodiscard // { dg-warning "undefining keyword 'nodiscard'" "" { target c++17 } }
