]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c++: Diagnose #define/#undef indeterminate
authorJakub Jelinek <jakub@redhat.com>
Mon, 10 Nov 2025 10:36:42 +0000 (11:36 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 10 Nov 2025 10:36:42 +0000 (11:36 +0100)
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  <jakub@redhat.com>

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.

gcc/cp/lex.cc
gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C
gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C
gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C
gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C
gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C
gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C

index 3bc48659a8c7450640186c0c12ec0228a6ef65f7..9a6d56309fd33544acad2914637200dd2a448b5f 100644 (file)
@@ -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");
        }
     }
 
index f47de7af26a24f31d64b1da8c7158e60a8ccce2f..6aee9ebb60967b23602497a6841585c4d3fdf5f7 100644 (file)
 #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 } }
index b1a9aa2cd6a01368689bb3983d659a11085e2829..dd494a15eec2cdd7c995210e7eec14eb70bd6348 100644 (file)
 #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 } }
index 4fde3ae36d183c916f1ee05df7f9bfbc46f72fd7..1b87f6687dc4495b6fbc891b5666e4df0293f995 100644 (file)
 #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 } }
index 13b3b68386d8bc404237448096fa9bb42f89108e..6349b9f1f55fe1f5e29c747d019ba0db75e54385 100644 (file)
 #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 } }
index 30a2c8d50e1fea4f692be59135d02f35ab7bcf56..3edf57e00885660f1b2351c0c4945f6a809b95e9 100644 (file)
 #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 } }
index b9b365e246c88e6182ef1d776ea3a332d6837589..00efe68bbe430600318237b3746abc83fbe7ab7b 100644 (file)
 #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 } }