diff options
author | Aaron Ballman <aaron@aaronballman.com> | 2023-08-11 08:40:01 -0400 |
---|---|---|
committer | Aaron Ballman <aaron@aaronballman.com> | 2023-08-11 08:42:01 -0400 |
commit | 9c4ade0623af842cda16e5c71b27fb794a3ff3db (patch) | |
tree | 54279a693dd76f7d290292b9489d5a48819c2521 | |
parent | 12e1a9b876e87e80c70fc0e72b648ce15aaaf24e (diff) | |
download | llvm-9c4ade0623af842cda16e5c71b27fb794a3ff3db.zip llvm-9c4ade0623af842cda16e5c71b27fb794a3ff3db.tar.gz llvm-9c4ade0623af842cda16e5c71b27fb794a3ff3db.tar.bz2 |
[C23] Rename C2x->C23 in diagnostics
This renames C2x to C23 in diagnostic identifiers and messages. The
changes were made mechanically.
64 files changed, 287 insertions, 281 deletions
diff --git a/clang/include/clang/Basic/DiagnosticCommonKinds.td b/clang/include/clang/Basic/DiagnosticCommonKinds.td index ee994e7..46a21d5 100644 --- a/clang/include/clang/Basic/DiagnosticCommonKinds.td +++ b/clang/include/clang/Basic/DiagnosticCommonKinds.td @@ -132,10 +132,10 @@ def warn_missing_type_specifier : Warning< InGroup<ImplicitInt>, DefaultIgnore; def ext_c_empty_initializer : Extension< - "use of an empty initializer is a C2x extension">, InGroup<C2x>; -def warn_c2x_compat_empty_initializer : Warning< - "use of an empty initializer is incompatible with C standards before C2x">, - InGroup<CPre2xCompat>, DefaultIgnore; + "use of an empty initializer is a C23 extension">, InGroup<C23>; +def warn_c23_compat_empty_initializer : Warning< + "use of an empty initializer is incompatible with C standards before C23">, + InGroup<CPre23Compat>, DefaultIgnore; } let CategoryName = "Nullability Issue" in { @@ -223,12 +223,12 @@ def err_cxx23_size_t_suffix: Error< def err_size_t_literal_too_large: Error< "%select{signed |}0'size_t' literal is out of range of possible " "%select{signed |}0'size_t' values">; -def ext_c2x_bitint_suffix : ExtWarn< - "'_BitInt' suffix for literals is a C2x extension">, - InGroup<C2x>; -def warn_c2x_compat_bitint_suffix : Warning< - "'_BitInt' suffix for literals is incompatible with C standards before C2x">, - InGroup<CPre2xCompat>, DefaultIgnore; +def ext_c23_bitint_suffix : ExtWarn< + "'_BitInt' suffix for literals is a C23 extension">, + InGroup<C23>; +def warn_c23_compat_bitint_suffix : Warning< + "'_BitInt' suffix for literals is incompatible with C standards before C23">, + InGroup<CPre23Compat>, DefaultIgnore; def err_integer_literal_too_large : Error< "integer literal is too large to be represented in any %select{signed |}0" "integer type">; diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td index ab990aa..990f223 100644 --- a/clang/include/clang/Basic/DiagnosticGroups.td +++ b/clang/include/clang/Basic/DiagnosticGroups.td @@ -144,7 +144,9 @@ def MacroRedefined : DiagGroup<"macro-redefined">; def BuiltinMacroRedefined : DiagGroup<"builtin-macro-redefined">; def BuiltinRequiresHeader : DiagGroup<"builtin-requires-header">; def C99Compat : DiagGroup<"c99-compat">; -def C2xCompat : DiagGroup<"c2x-compat">; +def C23Compat : DiagGroup<"c23-compat">; +def : DiagGroup<"c2x-compat", [C23Compat]>; + def CXXCompat: DiagGroup<"c++-compat">; def ExternCCompat : DiagGroup<"extern-c-compat">; def KeywordCompat : DiagGroup<"keyword-compat">; @@ -287,9 +289,11 @@ def : DiagGroup<"c++1z-compat-mangling", [CXX17CompatMangling]>; def NoexceptType : DiagGroup<"noexcept-type", [CXX17CompatMangling]>; // Warnings for C code which is not compatible with previous C standards. -def CPre2xCompat : DiagGroup<"pre-c2x-compat">; -def CPre2xCompatPedantic : DiagGroup<"pre-c2x-compat-pedantic", - [CPre2xCompat]>; +def CPre23Compat : DiagGroup<"pre-c23-compat">; +def CPre23CompatPedantic : DiagGroup<"pre-c23-compat-pedantic", + [CPre23Compat]>; +def : DiagGroup<"pre-c2x-compat", [CPre23Compat]>; +def : DiagGroup<"pre-c2x-compat-pedantic", [CPre23CompatPedantic]>; // Warnings for C++ code which is not compatible with previous C++ standards. def CXXPre14Compat : DiagGroup<"pre-c++14-compat">; @@ -1143,8 +1147,10 @@ def C11 : DiagGroup<"c11-extensions">; // A warning group for warnings about using C99 features as extensions. def C99 : DiagGroup<"c99-extensions", [C99Designator]>; -// A warning group for warnings about using C2x features as extensions. -def C2x : DiagGroup<"c2x-extensions">; +// A warning group for warnings about using C23 features as extensions. +def C23 : DiagGroup<"c23-extensions">; + +def : DiagGroup<"c2x-extensions", [C23]>; // A warning group for warnings about GCC extensions. def GNU : DiagGroup<"gnu", [GNUAlignofExpression, GNUAnonymousStruct, diff --git a/clang/include/clang/Basic/DiagnosticLexKinds.td b/clang/include/clang/Basic/DiagnosticLexKinds.td index 6ad6919..940cca6 100644 --- a/clang/include/clang/Basic/DiagnosticLexKinds.td +++ b/clang/include/clang/Basic/DiagnosticLexKinds.td @@ -82,8 +82,8 @@ def warn_cxx20_keyword : Warning<"'%0' is a keyword in C++20">, InGroup<CXX20Compat>, DefaultIgnore; def warn_c99_keyword : Warning<"'%0' is a keyword in C99">, InGroup<C99Compat>, DefaultIgnore; -def warn_c2x_keyword : Warning<"'%0' is a keyword in C2x">, - InGroup<C2xCompat>, DefaultIgnore; +def warn_c23_keyword : Warning<"'%0' is a keyword in C23">, + InGroup<C23Compat>, DefaultIgnore; def ext_unterminated_char_or_string : ExtWarn< "missing terminating %select{'|'\"'}0 character">, InGroup<InvalidPPToken>; @@ -197,14 +197,14 @@ def warn_cxx98_compat_literal_ucn_escape_basic_scs : Warning< def warn_cxx98_compat_literal_ucn_control_character : Warning< "universal character name referring to a control character " "is incompatible with C++98">, InGroup<CXX98Compat>, DefaultIgnore; -def warn_c2x_compat_literal_ucn_escape_basic_scs : Warning< +def warn_c23_compat_literal_ucn_escape_basic_scs : Warning< "specifying character '%0' with a universal character name is " - "incompatible with C standards before C2x">, - InGroup<CPre2xCompat>, DefaultIgnore; -def warn_c2x_compat_literal_ucn_control_character : Warning< + "incompatible with C standards before C23">, + InGroup<CPre23Compat>, DefaultIgnore; +def warn_c23_compat_literal_ucn_control_character : Warning< "universal character name referring to a control character " - "is incompatible with C standards before C2x">, - InGroup<CPre2xCompat>, DefaultIgnore; + "is incompatible with C standards before C23">, + InGroup<CPre23Compat>, DefaultIgnore; def warn_ucn_not_valid_in_c89 : Warning< "universal character names are only valid in C99 or C++; " "treating as '\\' followed by identifier">, InGroup<Unicode>; @@ -224,9 +224,9 @@ def err_invalid_suffix_constant : Error< def warn_cxx11_compat_digit_separator : Warning< "digit separators are incompatible with C++ standards before C++14">, InGroup<CXXPre14Compat>, DefaultIgnore; -def warn_c2x_compat_digit_separator : Warning< - "digit separators are incompatible with C standards before C2x">, - InGroup<CPre2xCompat>, DefaultIgnore; +def warn_c23_compat_digit_separator : Warning< + "digit separators are incompatible with C standards before C23">, + InGroup<CPre23Compat>, DefaultIgnore; def err_digit_separator_not_between_digits : Error< "digit separator cannot appear at %select{start|end}0 of digit sequence">; def warn_char_constant_too_large : Warning< @@ -415,13 +415,13 @@ def ext_pp_include_next_directive : Extension< "#include_next is a language extension">, InGroup<GNUIncludeNext>; def ext_pp_warning_directive : Extension< - "#warning is a %select{C2x|C++23}0 extension">; + "#warning is a %select{C23|C++23}0 extension">; def warn_cxx23_compat_warning_directive : Warning< "#warning is incompatible with C++ standards before C++23">, InGroup<CXXPre23Compat>, DefaultIgnore; -def warn_c2x_compat_warning_directive : Warning< - "#warning is incompatible with C standards before C2x">, - InGroup<CPre2xCompat>, DefaultIgnore; +def warn_c23_compat_warning_directive : Warning< + "#warning is incompatible with C standards before C23">, + InGroup<CPre23Compat>, DefaultIgnore; def ext_pp_extra_tokens_at_eol : ExtWarn< "extra tokens at end of #%0 directive">, InGroup<ExtraTokens>; @@ -750,14 +750,14 @@ def warn_cxx98_compat_pp_line_too_big : Warning< "#line number greater than 32767 is incompatible with C++98">, InGroup<CXX98CompatPedantic>, DefaultIgnore; -def warn_c2x_compat_pp_directive : Warning< +def warn_c23_compat_pp_directive : Warning< "use of a '#%select{<BUG IF SEEN>|elifdef|elifndef}0' directive " - "is incompatible with C standards before C2x">, - InGroup<CPre2xCompat>, DefaultIgnore; -def ext_c2x_pp_directive : ExtWarn< + "is incompatible with C standards before C23">, + InGroup<CPre23Compat>, DefaultIgnore; +def ext_c23_pp_directive : ExtWarn< "use of a '#%select{<BUG IF SEEN>|elifdef|elifndef}0' directive " - "is a C2x extension">, - InGroup<C2x>; + "is a C23 extension">, + InGroup<C23>; def warn_cxx23_compat_pp_directive : Warning< "use of a '#%select{<BUG IF SEEN>|elifdef|elifndef}0' directive " "is incompatible with C++ standards before C++23">, diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td index a804442..178761b 100644 --- a/clang/include/clang/Basic/DiagnosticParseKinds.td +++ b/clang/include/clang/Basic/DiagnosticParseKinds.td @@ -165,9 +165,9 @@ def ext_c99_feature : Extension< "'%0' is a C99 extension">, InGroup<C99>; def ext_c11_feature : Extension< "'%0' is a C11 extension">, InGroup<C11>; -def warn_c2x_compat_keyword : Warning< - "'%0' is incompatible with C standards before C2x">, - InGroup<CPre2xCompat>, DefaultIgnore; +def warn_c23_compat_keyword : Warning< + "'%0' is incompatible with C standards before C23">, + InGroup<CPre23Compat>, DefaultIgnore; def err_c11_noreturn_misplaced : Error< "'_Noreturn' keyword must precede function declarator">; @@ -300,14 +300,14 @@ def note_force_empty_selector_name : Note< "or insert whitespace before ':' to use %0 as parameter name " "and have an empty entry in the selector">; def ext_c_label_end_of_compound_statement : ExtWarn< - "label at end of compound statement is a C2x extension">, - InGroup<C2x>; + "label at end of compound statement is a C23 extension">, + InGroup<C23>; def ext_cxx_label_end_of_compound_statement : ExtWarn< "label at end of compound statement is a C++23 extension">, InGroup<CXX23>; -def warn_c2x_compat_label_end_of_compound_statement : Warning< - "label at end of compound statement is incompatible with C standards before C2x">, - InGroup<CPre2xCompat>, DefaultIgnore; +def warn_c23_compat_label_end_of_compound_statement : Warning< + "label at end of compound statement is incompatible with C standards before C23">, + InGroup<CPre23Compat>, DefaultIgnore; def warn_cxx20_compat_label_end_of_compound_statement : Warning< "label at end of compound statement is incompatible with C++ standards before C++23">, InGroup<CXXPre23Compat>, DefaultIgnore; @@ -447,15 +447,15 @@ def ext_ms_static_assert : ExtWarn< def ext_cxx_static_assert_no_message : ExtWarn< "'static_assert' with no message is a C++17 extension">, InGroup<CXX17>; def ext_c_static_assert_no_message : ExtWarn< - "'_Static_assert' with no message is a C2x extension">, InGroup<C2x>; + "'_Static_assert' with no message is a C23 extension">, InGroup<C23>; def warn_cxx14_compat_static_assert_no_message : Warning< "'static_assert' with no message is incompatible with C++ standards before " "C++17">, DefaultIgnore, InGroup<CXXPre17Compat>; def warn_c17_compat_static_assert_no_message : Warning< "'_Static_assert' with no message is incompatible with C standards before " - "C2x">, - DefaultIgnore, InGroup<CPre2xCompat>; + "C23">, + DefaultIgnore, InGroup<CPre23Compat>; def err_function_definition_not_allowed : Error< "function definition is not allowed here">; def err_expected_end_of_enumerator : Error< @@ -704,7 +704,7 @@ def warn_cxx98_compat_noexcept_expr : Warning< def warn_cxx98_compat_nullptr : Warning< "'nullptr' is incompatible with C++98">, InGroup<CXX98Compat>, DefaultIgnore; def ext_c_nullptr : Extension< - "'nullptr' is a C2x extension">, InGroup<C2x>; + "'nullptr' is a C23 extension">, InGroup<C23>; def warn_wrong_clang_attr_namespace : Warning< "'__clang__' is a predefined macro name, not an attribute scope specifier; " @@ -724,12 +724,12 @@ def warn_cxx98_compat_attribute : Warning< def warn_ext_cxx11_attributes : Extension< "[[]] attributes are a C++11 extension">, InGroup<CXX11>; -def warn_pre_c2x_compat_attributes : Warning< - "[[]] attributes are incompatible with C standards before C2x">, - DefaultIgnore, InGroup<CPre2xCompat>; -def warn_ext_c2x_attributes : Extension< - "[[]] attributes are a C2x extension">, - InGroup<C2x>; +def warn_pre_c23_compat_attributes : Warning< + "[[]] attributes are incompatible with C standards before C23">, + DefaultIgnore, InGroup<CPre23Compat>; +def warn_ext_c23_attributes : Extension< + "[[]] attributes are a C23 extension">, + InGroup<C23>; def err_cxx11_attribute_forbids_arguments : Error< "attribute %0 cannot have an argument list">; def err_attribute_requires_arguments : Error< diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 7e271ba..95f8f02 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -300,9 +300,9 @@ def err_bad_parameter_name : Error< "%0 cannot be the name of a parameter">; def err_bad_parameter_name_template_id : Error< "parameter name cannot have template arguments">; -def ext_parameter_name_omitted_c2x : ExtWarn< - "omitting the parameter name in a function definition is a C2x extension">, - InGroup<C2x>; +def ext_parameter_name_omitted_c23 : ExtWarn< + "omitting the parameter name in a function definition is a C23 extension">, + InGroup<C23>; def err_anyx86_interrupt_attribute : Error< "%select{x86|x86-64}0 'interrupt' attribute only applies to functions that " "have %select{a 'void' return type|" @@ -4182,7 +4182,7 @@ def warn_vector_mode_deprecated : Warning< "use the 'vector_size' attribute instead">, InGroup<DeprecatedAttributes>; def warn_deprecated_noreturn_spelling : Warning< - "the '[[_Noreturn]]' attribute spelling is deprecated in C2x; use " + "the '[[_Noreturn]]' attribute spelling is deprecated in C23; use " "'[[noreturn]]' instead">, InGroup<DeprecatedAttributes>; def err_complex_mode_vector_type : Error< "type of machine mode does not support base vector types">; @@ -5715,7 +5715,7 @@ def note_sentinel_here : Note< "%select{function|method|block}0 has been explicitly marked sentinel here">; def warn_strict_uses_without_prototype : Warning< "passing arguments to %select{a function|%1}0 without a prototype is " - "deprecated in all versions of C and is not supported in C2x">, + "deprecated in all versions of C and is not supported in C23">, InGroup<DeprecatedNonPrototype>; def warn_missing_prototype : Warning< "no previous prototype for function %0">, @@ -5730,8 +5730,8 @@ def warn_strict_prototypes : Extension< "%select{in all versions of C|}0">, InGroup<StrictPrototypes>; def warn_non_prototype_changes_behavior : Warning< "a function %select{declaration|definition}0 without a prototype is " - "deprecated in all versions of C %select{and is not supported in C2x|and is " - "treated as a zero-parameter prototype in C2x, conflicting with a " + "deprecated in all versions of C %select{and is not supported in C23|and is " + "treated as a zero-parameter prototype in C23, conflicting with a " "%select{previous|subsequent}2 %select{declaration|definition}3}1">, InGroup<DeprecatedNonPrototype>; def note_conflicting_prototype : Note<"conflicting prototype is here">; @@ -9992,7 +9992,7 @@ def warn_second_arg_of_va_start_not_last_named_param : Warning< InGroup<Varargs>; def warn_c17_compat_ellipsis_only_parameter : Warning< "'...' as the only parameter of a function is incompatible with C standards " - "before C2x">, DefaultIgnore, InGroup<CPre2xCompat>; + "before C23">, DefaultIgnore, InGroup<CPre23Compat>; def warn_va_start_type_is_undefined : Warning< "passing %select{an object that undergoes default argument promotion|" "an object of reference type|a parameter declared with the 'register' " diff --git a/clang/lib/Basic/IdentifierTable.cpp b/clang/lib/Basic/IdentifierTable.cpp index 57767fd..afb3026 100644 --- a/clang/lib/Basic/IdentifierTable.cpp +++ b/clang/lib/Basic/IdentifierTable.cpp @@ -915,7 +915,7 @@ IdentifierTable::getFutureCompatDiagKind(const IdentifierInfo &II, if ((Flags & KEYC99) == KEYC99) return diag::warn_c99_keyword; if ((Flags & KEYC23) == KEYC23) - return diag::warn_c2x_keyword; + return diag::warn_c23_keyword; } llvm_unreachable( diff --git a/clang/lib/Lex/Lexer.cpp b/clang/lib/Lex/Lexer.cpp index 15b78ca..fc73bbf 100644 --- a/clang/lib/Lex/Lexer.cpp +++ b/clang/lib/Lex/Lexer.cpp @@ -1959,7 +1959,7 @@ bool Lexer::LexNumericConstant(Token &Result, const char *CurPtr) { if (!isLexingRawMode()) Diag(CurPtr, LangOpts.CPlusPlus ? diag::warn_cxx11_compat_digit_separator - : diag::warn_c2x_compat_digit_separator); + : diag::warn_c23_compat_digit_separator); CurPtr = ConsumeChar(CurPtr, Size, Result); CurPtr = ConsumeChar(CurPtr, NextSize, Result); return LexNumericConstant(Result, CurPtr); diff --git a/clang/lib/Lex/LiteralSupport.cpp b/clang/lib/Lex/LiteralSupport.cpp index 22a417b..2de3078 100644 --- a/clang/lib/Lex/LiteralSupport.cpp +++ b/clang/lib/Lex/LiteralSupport.cpp @@ -689,14 +689,14 @@ static bool ProcessUCNEscape(const char *ThisTokBegin, const char *&ThisTokBuf, IsError ? diag::err_ucn_escape_basic_scs : Features.CPlusPlus ? diag::warn_cxx98_compat_literal_ucn_escape_basic_scs - : diag::warn_c2x_compat_literal_ucn_escape_basic_scs) + : diag::warn_c23_compat_literal_ucn_escape_basic_scs) << StringRef(&BasicSCSChar, 1); else Diag(Diags, Features, Loc, ThisTokBegin, UcnBegin, ThisTokBuf, IsError ? diag::err_ucn_control_character : Features.CPlusPlus ? diag::warn_cxx98_compat_literal_ucn_control_character - : diag::warn_c2x_compat_literal_ucn_control_character); + : diag::warn_c23_compat_literal_ucn_control_character); } if (IsError) return false; diff --git a/clang/lib/Lex/PPDirectives.cpp b/clang/lib/Lex/PPDirectives.cpp index a130ff1..eb660b9 100644 --- a/clang/lib/Lex/PPDirectives.cpp +++ b/clang/lib/Lex/PPDirectives.cpp @@ -767,8 +767,8 @@ void Preprocessor::SkipExcludedConditionalBlock(SourceLocation HashTokenLoc, DiagID = LangOpts.CPlusPlus23 ? diag::warn_cxx23_compat_pp_directive : diag::ext_cxx23_pp_directive; else - DiagID = LangOpts.C23 ? diag::warn_c2x_compat_pp_directive - : diag::ext_c2x_pp_directive; + DiagID = LangOpts.C23 ? diag::warn_c23_compat_pp_directive + : diag::ext_c23_pp_directive; Diag(Tok, DiagID) << (IsElifDef ? PED_Elifdef : PED_Elifndef); // If this is a #elif with a #else before it, report the error. @@ -1277,7 +1277,7 @@ void Preprocessor::HandleDirective(Token &Result) { : diag::ext_pp_warning_directive) << /*C++23*/ 1; else - Diag(Result, LangOpts.C23 ? diag::warn_c2x_compat_warning_directive + Diag(Result, LangOpts.C23 ? diag::warn_c23_compat_warning_directive : diag::ext_pp_warning_directive) << /*C23*/ 0; @@ -3453,8 +3453,8 @@ void Preprocessor::HandleElifFamilyDirective(Token &ElifToken, DiagID = LangOpts.CPlusPlus23 ? diag::warn_cxx23_compat_pp_directive : diag::ext_cxx23_pp_directive; else - DiagID = LangOpts.C23 ? diag::warn_c2x_compat_pp_directive - : diag::ext_c2x_pp_directive; + DiagID = LangOpts.C23 ? diag::warn_c23_compat_pp_directive + : diag::ext_c23_pp_directive; Diag(ElifToken, DiagID) << DirKind; break; default: diff --git a/clang/lib/Lex/PPExpressions.cpp b/clang/lib/Lex/PPExpressions.cpp index 7468313..269984a 100644 --- a/clang/lib/Lex/PPExpressions.cpp +++ b/clang/lib/Lex/PPExpressions.cpp @@ -336,8 +336,8 @@ static bool EvaluateValue(PPValue &Result, Token &PeekTok, DefinedTracker &DT, // to a library type may be more appropriate there. if (Literal.isBitInt) PP.Diag(PeekTok, PP.getLangOpts().C23 - ? diag::warn_c2x_compat_bitint_suffix - : diag::ext_c2x_bitint_suffix); + ? diag::warn_c23_compat_bitint_suffix + : diag::ext_c23_bitint_suffix); // Parse the integer literal into Result. if (Literal.GetIntegerValue(Result.Val)) { diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index 48a7f7d..2840b48 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -4000,7 +4000,7 @@ void Parser::ParseDeclarationSpecifiers( break; case tok::kw_thread_local: if (getLangOpts().C23) - Diag(Tok, diag::warn_c2x_compat_keyword) << Tok.getName(); + Diag(Tok, diag::warn_c23_compat_keyword) << Tok.getName(); isInvalid = DS.SetStorageClassSpecThread(DeclSpec::TSCS_thread_local, Loc, PrevSpec, DiagID); isStorageClass = true; @@ -4237,7 +4237,7 @@ void Parser::ParseDeclarationSpecifiers( break; case tok::kw_bool: if (getLangOpts().C23) - Diag(Tok, diag::warn_c2x_compat_keyword) << Tok.getName(); + Diag(Tok, diag::warn_c23_compat_keyword) << Tok.getName(); [[fallthrough]]; case tok::kw__Bool: if (Tok.is(tok::kw__Bool) && !getLangOpts().C99) @@ -7752,7 +7752,7 @@ void Parser::ParseTypeofSpecifier(DeclSpec &DS) { bool IsUnqual = Tok.is(tok::kw_typeof_unqual); const IdentifierInfo *II = Tok.getIdentifierInfo(); if (getLangOpts().C23 && !II->getName().startswith("__")) - Diag(Tok.getLocation(), diag::warn_c2x_compat_keyword) << Tok.getName(); + Diag(Tok.getLocation(), diag::warn_c23_compat_keyword) << Tok.getName(); Token OpTok = Tok; SourceLocation StartLoc = ConsumeToken(); @@ -7952,7 +7952,7 @@ void Parser::DiagnoseBitIntUse(const Token &Tok) { // In C23 mode, diagnose that the use is not compatible with pre-C23 modes. // Otherwise, diagnose that the use is a Clang extension. if (getLangOpts().C23) - Diag(Loc, diag::warn_c2x_compat_keyword) << Tok.getName(); + Diag(Loc, diag::warn_c23_compat_keyword) << Tok.getName(); else Diag(Loc, diag::ext_bit_int) << getLangOpts().CPlusPlus; } diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp index 7db7a41..186a5e6 100644 --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -973,7 +973,7 @@ Decl *Parser::ParseStaticAssertDeclaration(SourceLocation &DeclEnd) { if (Tok.is(tok::kw_static_assert)) { if (!getLangOpts().CPlusPlus) { if (getLangOpts().C23) - Diag(Tok, diag::warn_c2x_compat_keyword) << Tok.getName(); + Diag(Tok, diag::warn_c23_compat_keyword) << Tok.getName(); else Diag(Tok, diag::ext_ms_static_assert) << FixItHint::CreateReplacement( Tok.getLocation(), "_Static_assert"); @@ -4505,7 +4505,7 @@ void Parser::ParseCXX11AttributeSpecifierInternal(ParsedAttributes &Attrs, SourceLocation *EndLoc) { if (Tok.is(tok::kw_alignas)) { if (getLangOpts().C23) - Diag(Tok, diag::warn_c2x_compat_keyword) << Tok.getName(); + Diag(Tok, diag::warn_c23_compat_keyword) << Tok.getName(); else Diag(Tok.getLocation(), diag::warn_cxx98_compat_alignas); ParseAlignmentSpecifier(Attrs, EndLoc); @@ -4528,8 +4528,8 @@ void Parser::ParseCXX11AttributeSpecifierInternal(ParsedAttributes &Attrs, Diag(OpenLoc, getLangOpts().CPlusPlus11 ? diag::warn_cxx98_compat_attribute : diag::warn_ext_cxx11_attributes); } else { - Diag(OpenLoc, getLangOpts().C23 ? diag::warn_pre_c2x_compat_attributes - : diag::warn_ext_c2x_attributes); + Diag(OpenLoc, getLangOpts().C23 ? diag::warn_pre_c23_compat_attributes + : diag::warn_ext_c23_attributes); } ConsumeBracket(); diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp index a621440..bd72de0 100644 --- a/clang/lib/Parse/ParseExpr.cpp +++ b/clang/lib/Parse/ParseExpr.cpp @@ -1011,7 +1011,7 @@ ExprResult Parser::ParseCastExpression(CastParseKind ParseKind, if (getLangOpts().CPlusPlus) Diag(Tok, diag::warn_cxx98_compat_nullptr); else - Diag(Tok, getLangOpts().C23 ? diag::warn_c2x_compat_keyword + Diag(Tok, getLangOpts().C23 ? diag::warn_c23_compat_keyword : diag::ext_c_nullptr) << Tok.getName(); Res = Actions.ActOnCXXNullPtrLiteral(ConsumeToken()); @@ -2502,7 +2502,7 @@ ExprResult Parser::ParseUnaryExprOrTypeTraitExpression() { OpTok.isOneOf(tok::kw_alignof, tok::kw__Alignof)) Diag(OpTok, diag::warn_cxx98_compat_alignof); else if (getLangOpts().C23 && OpTok.is(tok::kw_alignof)) - Diag(OpTok, diag::warn_c2x_compat_keyword) << OpTok.getName(); + Diag(OpTok, diag::warn_c23_compat_keyword) << OpTok.getName(); EnterExpressionEvaluationContext Unevaluated( Actions, Sema::ExpressionEvaluationContext::Unevaluated, diff --git a/clang/lib/Parse/ParseInit.cpp b/clang/lib/Parse/ParseInit.cpp index 6794cb6..637f211 100644 --- a/clang/lib/Parse/ParseInit.cpp +++ b/clang/lib/Parse/ParseInit.cpp @@ -452,7 +452,7 @@ ExprResult Parser::ParseBraceInitializer() { // Empty initializers are a C++ feature and a GNU extension to C before C23. if (!getLangOpts().CPlusPlus) { Diag(LBraceLoc, getLangOpts().C23 - ? diag::warn_c2x_compat_empty_initializer + ? diag::warn_c23_compat_empty_initializer : diag::ext_c_empty_initializer); } // Match the '}'. diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp index e6f8260..110806e 100644 --- a/clang/lib/Parse/ParseStmt.cpp +++ b/clang/lib/Parse/ParseStmt.cpp @@ -1076,7 +1076,7 @@ void Parser::DiagnoseLabelAtEndOfCompoundStatement() { : diag::ext_cxx_label_end_of_compound_statement); } else { Diag(Tok, getLangOpts().C23 - ? diag::warn_c2x_compat_label_end_of_compound_statement + ? diag::warn_c23_compat_label_end_of_compound_statement : diag::ext_c_label_end_of_compound_statement); } } diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index a73d877..09696ee 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -16747,7 +16747,7 @@ bool Sema::CheckParmsForFunctionDef(ArrayRef<ParmVarDecl *> Parameters, !Param->isImplicit() && !getLangOpts().CPlusPlus) { // Diagnose this as an extension in C17 and earlier. if (!getLangOpts().C23) - Diag(Param->getLocation(), diag::ext_parameter_name_omitted_c2x); + Diag(Param->getLocation(), diag::ext_parameter_name_omitted_c23); } // C99 6.7.5.3p12: diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index d413b81..72e3b01 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -4121,8 +4121,8 @@ ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) { // type such as std::bit_int instead of returning a _BitInt. if (Literal.isBitInt && !getLangOpts().CPlusPlus) PP.Diag(Tok.getLocation(), getLangOpts().C23 - ? diag::warn_c2x_compat_bitint_suffix - : diag::ext_c2x_bitint_suffix); + ? diag::warn_c23_compat_bitint_suffix + : diag::ext_c23_bitint_suffix); // Get the value in the widest-possible width. What is "widest" depends on // whether the literal is a bit-precise integer or not. For a bit-precise @@ -16993,7 +16993,7 @@ void Sema::ActOnBlockArguments(SourceLocation CaretLoc, Declarator &ParamInfo, !Param->isInvalidDecl() && !getLangOpts().CPlusPlus) { // Diagnose this as an extension in C17 and earlier. if (!getLangOpts().C23) - Diag(Param->getLocation(), diag::ext_parameter_name_omitted_c2x); + Diag(Param->getLocation(), diag::ext_parameter_name_omitted_c23); } Params.push_back(Param); } diff --git a/clang/test/Analysis/region-store.c b/clang/test/Analysis/region-store.c index 568bcd7..e58b5bb 100644 --- a/clang/test/Analysis/region-store.c +++ b/clang/test/Analysis/region-store.c @@ -60,9 +60,9 @@ void testConstraintOnRegionOffsetStack(int *values, int length, int i) { } int buffer[10]; -void b(); // expected-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C2x, conflicting with a subsequent definition}} +void b(); // expected-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C23, conflicting with a subsequent definition}} void missingPrototypeCallsiteMatchingArgsAndParams() { - // expected-warning@+1 {{passing arguments to 'b' without a prototype is deprecated in all versions of C and is not supported in C2x}} + // expected-warning@+1 {{passing arguments to 'b' without a prototype is deprecated in all versions of C and is not supported in C23}} b(&buffer); } void b(int *c) { // expected-note {{conflicting prototype is here}} @@ -70,9 +70,9 @@ void b(int *c) { // expected-note {{conflicting prototype is here}} *c = 42; // no-crash } -void c(); // expected-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C2x, conflicting with a subsequent definition}} +void c(); // expected-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C23, conflicting with a subsequent definition}} void missingPrototypeCallsiteMismatchingArgsAndParams() { - // expected-warning@+1 {{passing arguments to 'c' without a prototype is deprecated in all versions of C and is not supported in C2x}} + // expected-warning@+1 {{passing arguments to 'c' without a prototype is deprecated in all versions of C and is not supported in C23}} c(&buffer, &buffer); } void c(int *c) { // expected-note {{conflicting prototype is here}} diff --git a/clang/test/C/C11/n1330.c b/clang/test/C/C11/n1330.c index 4e6d18d..153f199 100644 --- a/clang/test/C/C11/n1330.c +++ b/clang/test/C/C11/n1330.c @@ -9,13 +9,13 @@ // extension that allows you to elide the second argument. int a; _Static_assert(a, ""); // expected-error {{static assertion expression is not an integral constant expression}} -_Static_assert(1); // expected-warning {{'_Static_assert' with no message is a C2x extension}} +_Static_assert(1); // expected-warning {{'_Static_assert' with no message is a C23 extension}} // Test functional requirements _Static_assert(1, "this works"); _Static_assert(0, "this fails"); // expected-error {{static assertion failed: this fails}} _Static_assert(0); // expected-error {{static assertion failed}} \ - expected-warning {{'_Static_assert' with no message is a C2x extension}} + expected-warning {{'_Static_assert' with no message is a C23 extension}} // Test declaration contexts. We've already demonstrated that file scope works. struct S { @@ -66,7 +66,7 @@ void test(void) { // The error about expecting a ';' is due to the static assertion confusing the // compiler. It'd be nice if we improved the diagnostics here, but because this // involves a K&R C declaration, it's low priority. -void knr(a, b, c) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +void knr(a, b, c) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} int a, b; // expected-error {{expected ';' at end of declaration}} _Static_assert(1, "this should not compile"); // expected-error {{expected identifier or '('}} \ expected-error {{type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int}} diff --git a/clang/test/C/C2x/n2607.c b/clang/test/C/C2x/n2607.c index 763cfd9..9595aae 100644 --- a/clang/test/C/C2x/n2607.c +++ b/clang/test/C/C2x/n2607.c @@ -14,7 +14,7 @@ void matrix_fun(int N, const float x[N][N]); void test1(void) { int N = 100; float x[N][N]; - // FIXME: This is OK in C2x but should be diagnosed as passing incompatible + // FIXME: This is OK in C23 but should be diagnosed as passing incompatible // pointer types in C17 and earlier. matrix_fun(N, x); } diff --git a/clang/test/C/C2x/n2900_n3011.c b/clang/test/C/C2x/n2900_n3011.c index 6aaff33..4350aa1 100644 --- a/clang/test/C/C2x/n2900_n3011.c +++ b/clang/test/C/C2x/n2900_n3011.c @@ -9,12 +9,12 @@ * Consistent, Warningless, and Intuitive Initialization with {} */ void test(void) { - struct S { int x, y; } s = {}; // compat-warning {{use of an empty initializer is incompatible with C standards before C2x}} \ - pedantic-warning {{use of an empty initializer is a C2x extension}} - int i = {}; // compat-warning {{use of an empty initializer is incompatible with C standards before C2x}} \ - pedantic-warning {{use of an empty initializer is a C2x extension}} - int j = (int){}; // compat-warning {{use of an empty initializer is incompatible with C standards before C2x}} \ - pedantic-warning {{use of an empty initializer is a C2x extension}} + struct S { int x, y; } s = {}; // compat-warning {{use of an empty initializer is incompatible with C standards before C23}} \ + pedantic-warning {{use of an empty initializer is a C23 extension}} + int i = {}; // compat-warning {{use of an empty initializer is incompatible with C standards before C23}} \ + pedantic-warning {{use of an empty initializer is a C23 extension}} + int j = (int){}; // compat-warning {{use of an empty initializer is incompatible with C standards before C23}} \ + pedantic-warning {{use of an empty initializer is a C23 extension}} // C2x 6.7.10p4 says, in part: An array of unknown size shall not be // initialized by an empty initializer. @@ -23,38 +23,38 @@ void test(void) { // that we support empty initialization of an unbounded array in C++, we also // support it in C. int unknown_size[] = {}; // pedantic-warning {{zero size arrays are an extension}} \ - pedantic-warning {{use of an empty initializer is a C2x extension}} \ - compat-warning {{use of an empty initializer is incompatible with C standards before C2x}} - int vla[i] = {}; // compat-warning {{use of an empty initializer is incompatible with C standards before C2x}} \ - pedantic-warning {{use of an empty initializer is a C2x extension}} - int *compound_literal_vla = (int[i]){}; // compat-warning {{use of an empty initializer is incompatible with C standards before C2x}} \ - pedantic-warning {{use of an empty initializer is a C2x extension}} + pedantic-warning {{use of an empty initializer is a C23 extension}} \ + compat-warning {{use of an empty initializer is incompatible with C standards before C23}} + int vla[i] = {}; // compat-warning {{use of an empty initializer is incompatible with C standards before C23}} \ + pedantic-warning {{use of an empty initializer is a C23 extension}} + int *compound_literal_vla = (int[i]){}; // compat-warning {{use of an empty initializer is incompatible with C standards before C23}} \ + pedantic-warning {{use of an empty initializer is a C23 extension}} struct T { int i; struct S s; - } t1 = { 1, {} }; // compat-warning {{use of an empty initializer is incompatible with C standards before C2x}} \ - pedantic-warning {{use of an empty initializer is a C2x extension}} + } t1 = { 1, {} }; // compat-warning {{use of an empty initializer is incompatible with C standards before C23}} \ + pedantic-warning {{use of an empty initializer is a C23 extension}} struct T t2 = { 1, { - 2, {} // compat-warning {{use of an empty initializer is incompatible with C standards before C2x}} \ - pedantic-warning {{use of an empty initializer is a C2x extension}} + 2, {} // compat-warning {{use of an empty initializer is incompatible with C standards before C23}} \ + pedantic-warning {{use of an empty initializer is a C23 extension}} } }; struct T t3 = { - (int){}, // compat-warning {{use of an empty initializer is incompatible with C standards before C2x}} \ - pedantic-warning {{use of an empty initializer is a C2x extension}} - {} // compat-warning {{use of an empty initializer is incompatible with C standards before C2x}} \ - pedantic-warning {{use of an empty initializer is a C2x extension}} + (int){}, // compat-warning {{use of an empty initializer is incompatible with C standards before C23}} \ + pedantic-warning {{use of an empty initializer is a C23 extension}} + {} // compat-warning {{use of an empty initializer is incompatible with C standards before C23}} \ + pedantic-warning {{use of an empty initializer is a C23 extension}} }; // Ensure that zero initialization does what you'd expect in a constant expr. // FIXME: the "not an ICE" warning is incorrect for C2x, but we don't yet // implement WG14 N3038. - _Static_assert((int){} == 0, "what?"); // compat-warning {{use of an empty initializer is incompatible with C standards before C2x}} \ - pedantic-warning {{use of an empty initializer is a C2x extension}} \ + _Static_assert((int){} == 0, "what?"); // compat-warning {{use of an empty initializer is incompatible with C standards before C23}} \ + pedantic-warning {{use of an empty initializer is a C23 extension}} \ pedantic-warning {{expression is not an integer constant expression; folding it to a constant is a GNU extension}} } diff --git a/clang/test/C/C2x/n2934.c b/clang/test/C/C2x/n2934.c index d967446..a5ee09d 100644 --- a/clang/test/C/C2x/n2934.c +++ b/clang/test/C/C2x/n2934.c @@ -5,18 +5,18 @@ * Revise spelling of keywords v7 */ -thread_local struct alignas(int) S { // c2x-warning {{'alignas' is incompatible with C standards before C2x}} \ - c2x-warning {{'thread_local' is incompatible with C standards before C2x}} \ +thread_local struct alignas(int) S { // c2x-warning {{'alignas' is incompatible with C standards before C23}} \ + c2x-warning {{'thread_local' is incompatible with C standards before C23}} \ c2x-error 0+ {{thread-local storage is not supported for the current target}} \ c17-error {{unknown type name 'thread_local'}} \ c17-error {{expected identifier or '('}} \ c17-error {{expected ')'}} \ c17-note {{to match this '('}} - bool b; // c2x-warning {{'bool' is incompatible with C standards before C2x}} + bool b; // c2x-warning {{'bool' is incompatible with C standards before C23}} } s; // c17-error {{type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int}} -static_assert(alignof(struct S) == alignof(int), ""); // c2x-warning {{'static_assert' is incompatible with C standards before C2x}} \ - c2x-warning 2 {{'alignof' is incompatible with C standards before C2x}} \ +static_assert(alignof(struct S) == alignof(int), ""); // c2x-warning {{'static_assert' is incompatible with C standards before C23}} \ + c2x-warning 2 {{'alignof' is incompatible with C standards before C23}} \ c17-error 2 {{type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int}} \ c17-error {{expected ')'}} \ c17-warning {{declaration of 'struct S' will not be visible outside of this function}} \ diff --git a/clang/test/C/C2x/n2975.c b/clang/test/C/C2x/n2975.c index f5b94c2..5fc641d 100644 --- a/clang/test/C/C2x/n2975.c +++ b/clang/test/C/C2x/n2975.c @@ -8,8 +8,8 @@ #define DERP this is an error -void func(...) { // expected-warning {{'...' as the only parameter of a function is incompatible with C standards before C2x}} - // Show that va_start doesn't require the second argument in C2x mode. +void func(...) { // expected-warning {{'...' as the only parameter of a function is incompatible with C standards before C23}} + // Show that va_start doesn't require the second argument in C23 mode. va_list list; va_start(list); // FIXME: it would be nice to issue a portability warning to C17 and earlier here. va_end(list); @@ -32,7 +32,7 @@ void func(...) { // expected-warning {{'...' as the only parameter of a function // Show that function pointer types also don't need an argument before the // ellipsis. -typedef void (*fp)(...); // expected-warning {{'...' as the only parameter of a function is incompatible with C standards before C2x}} +typedef void (*fp)(...); // expected-warning {{'...' as the only parameter of a function is incompatible with C standards before C23}} // Passing something other than the argument before the ... is still not valid. void diag(int a, int b, ...) { @@ -41,7 +41,7 @@ void diag(int a, int b, ...) { // to __builtin_va_start. However, because va_start is not allowed to expand // or evaluate the second argument, we can't pass it along to // __builtin_va_start to get that diagnostic. So in C17 and earlier, we will - // diagnose this use through the macro, but in C2x and later we've lost the + // diagnose this use through the macro, but in C23 and later we've lost the // diagnostic entirely. GCC has the same issue currently. va_start(list, a); // However, the builtin itself is under no such constraints regarding diff --git a/clang/test/C/drs/dr0xx.c b/clang/test/C/drs/dr0xx.c index 9eb6263..d9c1fbe 100644 --- a/clang/test/C/drs/dr0xx.c +++ b/clang/test/C/drs/dr0xx.c @@ -238,13 +238,13 @@ int dr032 = (1, 2); /* expected-warning {{left operand of comma operator has no /* WG14 DR035: partial * Questions about definition of functions without a prototype */ -void dr035_1(a, b) /* expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} */ +void dr035_1(a, b) /* expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} */ int a(enum b {x, y}); /* expected-warning {{declaration of 'enum b' will not be visible outside of this function}} */ int b; { int test = x; /* expected-error {{use of undeclared identifier 'x'}} */ } -void dr035_2(c) /* expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} */ +void dr035_2(c) /* expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} */ enum m{q, r} c; { /* expected-warning {{declaration of 'enum m' will not be visible outside of this function}} */ /* FIXME: This should be accepted because the scope of m, q, and r ends at * the closing brace of the function per C89 6.1.2.1. @@ -352,9 +352,9 @@ void dr053(void) { fp1 = f; fp2 = fp1; - (*fp2)(3); /* expected-warning {{passing arguments to a function without a prototype is deprecated in all versions of C and is not supported in C2x}} */ + (*fp2)(3); /* expected-warning {{passing arguments to a function without a prototype is deprecated in all versions of C and is not supported in C23}} */ fpp = &fp1; - (**fpp)(3); /* expected-warning {{passing arguments to a function without a prototype is deprecated in all versions of C and is not supported in C2x}} */ + (**fpp)(3); /* expected-warning {{passing arguments to a function without a prototype is deprecated in all versions of C and is not supported in C23}} */ } #endif /* __STDC_VERSION__ < 202311L */ @@ -398,7 +398,7 @@ void dr068(void) { * a prototype causes implicit conversions rather than relying on default * argument promotion and warm thoughts. */ -void dr070_1(c) /* expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} */ +void dr070_1(c) /* expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} */ int c; { } diff --git a/clang/test/C/drs/dr2xx.c b/clang/test/C/drs/dr2xx.c index 1aa8db5..9c8d775 100644 --- a/clang/test/C/drs/dr2xx.c +++ b/clang/test/C/drs/dr2xx.c @@ -247,7 +247,7 @@ void dr252(void) { * prototype, but Clang treats it as an error. */ dr252_no_proto(dr252_proto()); /* expected-error {{argument type 'void' is incomplete}} - expected-warning {{passing arguments to 'dr252_no_proto' without a prototype is deprecated in all versions of C and is not supported in C2x}} + expected-warning {{passing arguments to 'dr252_no_proto' without a prototype is deprecated in all versions of C and is not supported in C23}} */ } #endif /* __STDC_VERSION__ < 202311L */ diff --git a/clang/test/C/drs/dr3xx.c b/clang/test/C/drs/dr3xx.c index 9493e95..4d66171 100644 --- a/clang/test/C/drs/dr3xx.c +++ b/clang/test/C/drs/dr3xx.c @@ -118,7 +118,7 @@ _Static_assert(sizeof(dr315.c + dr315.d) == sizeof(int), ""); /* WG14 DR316: yes * Unprototyped function types */ -void dr316_1(a) int a; {} /* expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} */ +void dr316_1(a) int a; {} /* expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} */ void (*dr316_1_ptr)(int, int, int) = dr316_1; /* WG14 DR317: yes @@ -134,7 +134,7 @@ void dr317_1() {} /* expected-warning {{a function declaration without a protot void dr317_2(void) { if (0) dr317_1(1); /* expected-warning {{too many arguments in call to 'dr317_1'}} - expected-warning {{passing arguments to 'dr317_1' without a prototype is deprecated in all versions of C and is not supported in C2x}} + expected-warning {{passing arguments to 'dr317_1' without a prototype is deprecated in all versions of C and is not supported in C23}} */ } #endif /* __STDC_VERSION__ < 202311L */ diff --git a/clang/test/C/drs/dr4xx.c b/clang/test/C/drs/dr4xx.c index 5c5349a..b8cccea 100644 --- a/clang/test/C/drs/dr4xx.c +++ b/clang/test/C/drs/dr4xx.c @@ -301,7 +301,7 @@ void dr489(void) { switch (i) { case (int)0.0f: break; /* okay, a valid ICE */ - /* FIXME: this should be accepted in C2x and up without a diagnostic, as C23 + /* FIXME: this should be accepted in C23 and up without a diagnostic, as C23 * added compound literals to the allowed list of things in an ICE. The * diagnostic is correct for C17 and earlier though. */ diff --git a/clang/test/CodeGen/2009-06-01-addrofknr.c b/clang/test/CodeGen/2009-06-01-addrofknr.c index 905c696..c769b63 100644 --- a/clang/test/CodeGen/2009-06-01-addrofknr.c +++ b/clang/test/CodeGen/2009-06-01-addrofknr.c @@ -5,7 +5,7 @@ struct funcptr { int (*func)(); }; -static int func(f) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +static int func(f) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} void *f; { return 0; diff --git a/clang/test/Lexer/Inputs/unsafe-macro-2.h b/clang/test/Lexer/Inputs/unsafe-macro-2.h index e7254bc..abec8047 100644 --- a/clang/test/Lexer/Inputs/unsafe-macro-2.h +++ b/clang/test/Lexer/Inputs/unsafe-macro-2.h @@ -40,7 +40,7 @@ const int z = UNSAFE_MACRO_2; #ifdef baz #elifdef UNSAFE_MACRO // expected-warning@-1{{macro 'UNSAFE_MACRO' has been marked as unsafe for use in headers: Don't use this!}} -// expected-warning@-2{{use of a '#elifdef' directive is a C2x extension}} +// expected-warning@-2{{use of a '#elifdef' directive is a C23 extension}} #endif // Test that we diagnose on #elifndef. @@ -48,7 +48,7 @@ const int z = UNSAFE_MACRO_2; #elifndef UNSAFE_MACRO #endif // expected-warning@-2{{macro 'UNSAFE_MACRO' has been marked as unsafe for use in headers: Don't use this!}} -// expected-warning@-3{{use of a '#elifndef' directive is a C2x extension}} +// expected-warning@-3{{use of a '#elifndef' directive is a C23 extension}} // FIXME: These cases are currently not handled because clang doesn't expand // conditions on skipped #elif* blocks. See the FIXME notes in @@ -58,13 +58,13 @@ const int z = UNSAFE_MACRO_2; #ifdef frobble // not-expected-warning@+2{{macro 'UNSAFE_MACRO' has been marked as unsafe for use in headers: Don't use this!}} -// expected-warning@+1{{use of a '#elifndef' directive is a C2x extension}} +// expected-warning@+1{{use of a '#elifndef' directive is a C23 extension}} #elifndef UNSAFE_MACRO #endif #ifdef frobble // not-expected-warning@+2{{macro 'UNSAFE_MACRO' has been marked as unsafe for use in headers: Don't use this!}} -// expected-warning@+1{{use of a '#elifdef' directive is a C2x extension}} +// expected-warning@+1{{use of a '#elifdef' directive is a C23 extension}} #elifdef UNSAFE_MACRO #endif diff --git a/clang/test/Lexer/bitint-constants-compat.c b/clang/test/Lexer/bitint-constants-compat.c index 6429c3c..607ae88 100644 --- a/clang/test/Lexer/bitint-constants-compat.c +++ b/clang/test/Lexer/bitint-constants-compat.c @@ -2,13 +2,13 @@ // RUN: %clang_cc1 -std=c2x -fsyntax-only -verify=compat -Wpre-c2x-compat -Wno-unused %s // RUN: %clang_cc1 -fsyntax-only -verify=cpp -Wno-unused -x c++ %s -#if 18446744073709551615uwb // ext-warning {{'_BitInt' suffix for literals is a C2x extension}} \ - compat-warning {{'_BitInt' suffix for literals is incompatible with C standards before C2x}} \ +#if 18446744073709551615uwb // ext-warning {{'_BitInt' suffix for literals is a C23 extension}} \ + compat-warning {{'_BitInt' suffix for literals is incompatible with C standards before C23}} \ cpp-error {{invalid suffix 'uwb' on integer constant}} #endif void func(void) { - 18446744073709551615wb; // ext-warning {{'_BitInt' suffix for literals is a C2x extension}} \ - compat-warning {{'_BitInt' suffix for literals is incompatible with C standards before C2x}} \ + 18446744073709551615wb; // ext-warning {{'_BitInt' suffix for literals is a C23 extension}} \ + compat-warning {{'_BitInt' suffix for literals is incompatible with C standards before C23}} \ cpp-error {{invalid suffix 'wb' on integer constant}} } diff --git a/clang/test/Lexer/deprecate-macro.c b/clang/test/Lexer/deprecate-macro.c index 1f08093b..a834d72 100644 --- a/clang/test/Lexer/deprecate-macro.c +++ b/clang/test/Lexer/deprecate-macro.c @@ -79,7 +79,7 @@ int main(int argc, char** argv) { #ifdef baz #elifdef foo // expected-warning@-1{{macro 'foo' has been marked as deprecated}} -// expected-warning@-2{{use of a '#elifdef' directive is a C2x extension}} +// expected-warning@-2{{use of a '#elifdef' directive is a C23 extension}} #endif // Test that we diagnose on #elifndef. @@ -87,7 +87,7 @@ int main(int argc, char** argv) { #elifndef foo #endif // expected-warning@-2{{macro 'foo' has been marked as deprecated}} -// expected-warning@-3{{use of a '#elifndef' directive is a C2x extension}} +// expected-warning@-3{{use of a '#elifndef' directive is a C23 extension}} // FIXME: These cases are currently not handled because clang doesn't expand // conditions on skipped #elif* blocks. See the FIXME notes in @@ -95,13 +95,13 @@ int main(int argc, char** argv) { #ifdef frobble // not-expected-warning@+2{{macro 'foo' has been marked as deprecated}} -// expected-warning@+1{{use of a '#elifndef' directive is a C2x extension}} +// expected-warning@+1{{use of a '#elifndef' directive is a C23 extension}} #elifndef foo #endif #ifdef frobble // not-expected-warning@+2{{macro 'foo' has been marked as deprecated}} -// expected-warning@+1{{use of a '#elifdef' directive is a C2x extension}} +// expected-warning@+1{{use of a '#elifdef' directive is a C23 extension}} #elifdef foo #endif diff --git a/clang/test/Lexer/keywords_test.c b/clang/test/Lexer/keywords_test.c index b093f97..466ed82 100644 --- a/clang/test/Lexer/keywords_test.c +++ b/clang/test/Lexer/keywords_test.c @@ -93,13 +93,13 @@ void has_static_assert(); int restrict; // c89-warning {{'restrict' is a keyword in C99}} int inline; // c89-warning {{'inline' is a keyword in C99}} - int bool; // c89-warning {{'bool' is a keyword in C2x}} - char true; // c89-warning {{'true' is a keyword in C2x}} - char false; // c89-warning {{'false' is a keyword in C2x}} - float alignof; // c89-warning {{'alignof' is a keyword in C2x}} - int typeof; // c89-warning {{'typeof' is a keyword in C2x}} - int typeof_unqual; // c89-warning {{'typeof_unqual' is a keyword in C2x}} - int alignas; // c89-warning {{'alignas' is a keyword in C2x}} - int static_assert; // c89-warning {{'static_assert' is a keyword in C2x}} + int bool; // c89-warning {{'bool' is a keyword in C23}} + char true; // c89-warning {{'true' is a keyword in C23}} + char false; // c89-warning {{'false' is a keyword in C23}} + float alignof; // c89-warning {{'alignof' is a keyword in C23}} + int typeof; // c89-warning {{'typeof' is a keyword in C23}} + int typeof_unqual; // c89-warning {{'typeof_unqual' is a keyword in C23}} + int alignas; // c89-warning {{'alignas' is a keyword in C23}} + int static_assert; // c89-warning {{'static_assert' is a keyword in C23}} #endif diff --git a/clang/test/Parser/c2x-func-prototype.c b/clang/test/Parser/c2x-func-prototype.c index 2602fa8..f2a8b8d 100644 --- a/clang/test/Parser/c2x-func-prototype.c +++ b/clang/test/Parser/c2x-func-prototype.c @@ -2,7 +2,7 @@ // RUN: %clang_cc1 -Wno-strict-prototypes -fsyntax-only -verify -std=c17 %s // expected-no-diagnostics -// Functions with an identifier list are not supported in C2x. +// Functions with an identifier list are not supported in C23. void ident_list(a) // c2x-error {{expected ';' after top level declarator}} \ c2x-error {{unknown type name 'a'}} int a; diff --git a/clang/test/Parser/c2x-label.c b/clang/test/Parser/c2x-label.c index 8e276c05..f7fcd6e 100644 --- a/clang/test/Parser/c2x-label.c +++ b/clang/test/Parser/c2x-label.c @@ -6,8 +6,8 @@ void test_label_in_func() { label1: x = 1; label2: label3: label4: -} // c17-warning {{label at end of compound statement is a C2x extension}} \ - c2x-warning {{label at end of compound statement is incompatible with C standards before C2x}} +} // c17-warning {{label at end of compound statement is a C23 extension}} \ + c2x-warning {{label at end of compound statement is incompatible with C standards before C23}} int test_label_in_switch(int v) { switch (v) { @@ -16,15 +16,15 @@ int test_label_in_switch(int v) { case 2: return 2; case 3: case 4: case 5: - } // c17-warning {{label at end of compound statement is a C2x extension}} \ - c2x-warning {{label at end of compound statement is incompatible with C standards before C2x}} + } // c17-warning {{label at end of compound statement is a C23 extension}} \ + c2x-warning {{label at end of compound statement is incompatible with C standards before C23}} switch (v) { case 6: return 6; default: - } // c17-warning {{label at end of compound statement is a C2x extension}} \ - c2x-warning {{label at end of compound statement is incompatible with C standards before C2x}} + } // c17-warning {{label at end of compound statement is a C23 extension}} \ + c2x-warning {{label at end of compound statement is incompatible with C standards before C23}} return 0; } diff --git a/clang/test/Parser/c2x-typeof-ext-warns.c b/clang/test/Parser/c2x-typeof-ext-warns.c index 1c382d3d2..3871844 100644 --- a/clang/test/Parser/c2x-typeof-ext-warns.c +++ b/clang/test/Parser/c2x-typeof-ext-warns.c @@ -9,7 +9,7 @@ // Exercise the various circumstances under which we will diagnose use of // typeof and typeof_unqual as either an extension or as a compatability // warning. Note that GCC exposes 'typeof' as a non-conforming extension in -// standards before C2x, and Clang has followed suit. Neither compiler exposes +// standards before C23, and Clang has followed suit. Neither compiler exposes // 'typeof_unqual' as a non-conforming extension. // Show what happens with the underscored version of the keyword, which is a @@ -19,11 +19,11 @@ __typeof__(int) i = 12; // Show what happens with a regular 'typeof' use. typeof(i) j = 12; // c11-error {{expected function body after function declarator}} \ pedantic-warning {{extension used}} \ - compat-warning {{'typeof' is incompatible with C standards before C2x}} + compat-warning {{'typeof' is incompatible with C standards before C23}} // Same for 'typeof_unqual'. typeof_unqual(j) k = 12; // c11-error {{expected function body after function declarator}} \ gnu11-error {{expected function body after function declarator}} \ pedantic-error {{expected function body after function declarator}} \ - compat-warning {{'typeof_unqual' is incompatible with C standards before C2x}} + compat-warning {{'typeof_unqual' is incompatible with C standards before C23}} diff --git a/clang/test/Parser/declarators.c b/clang/test/Parser/declarators.c index 3af0981..08c5df9 100644 --- a/clang/test/Parser/declarators.c +++ b/clang/test/Parser/declarators.c @@ -27,12 +27,12 @@ void test2(int *P, int A) { } typedef int atype; -void test3(x, /* expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} */ +void test3(x, /* expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} */ atype /* expected-error {{unexpected type name 'atype': expected identifier}} */ ) int x, atype; {} void test4(x, x) int x; {} // expected-error {{redefinition of parameter 'x'}} \ - // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} + // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} // PR3031 @@ -99,11 +99,11 @@ void *test14b = (void*)test14a; // Make sure test14a didn't get skipped. long struct X { int x; } test15(void); // expected-error {{'long struct' is invalid}} void test16(i) int i j; { } // expected-error {{expected ';' at end of declaration}} \ - // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} + // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} void test17(i, j) int i, j k; { } // expected-error {{expected ';' at end of declaration}} \ - // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} + // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} void knrNoSemi(i) int i { } // expected-error {{expected ';' at end of declaration}} \ - // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} + // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} // PR12595 void test18(void) { diff --git a/clang/test/Parser/static_assert.c b/clang/test/Parser/static_assert.c index 08b2c37..e9d7d3f 100644 --- a/clang/test/Parser/static_assert.c +++ b/clang/test/Parser/static_assert.c @@ -15,7 +15,7 @@ // Only test the C++ spelling in C mode in some of the tests, to reduce the // amount of diagnostics to have to check. This spelling is allowed in MS- // compatibility mode in C, but otherwise produces errors. -static_assert(1, ""); // c17-warning {{'static_assert' is a keyword in C2x}} \ +static_assert(1, ""); // c17-warning {{'static_assert' is a keyword in C23}} \ // c17-error {{expected parameter declarator}} \ // c17-error {{expected ')'}} \ // c17-note {{to match this '('}} \ @@ -36,14 +36,14 @@ _Static_assert(1, ""); // c99-pedantic-warning {{'_Static_assert' is a C11 exten // older standards. // * In older standard pedantic modes, warn about supporting without a // message as an extension. -_Static_assert(1); // c99-pedantic-warning {{'_Static_assert' with no message is a C2x extension}} \ - // c99-warning {{'_Static_assert' with no message is a C2x extension}} \ +_Static_assert(1); // c99-pedantic-warning {{'_Static_assert' with no message is a C23 extension}} \ + // c99-warning {{'_Static_assert' with no message is a C23 extension}} \ // cxx98-pedantic-warning {{'static_assert' with no message is a C++17 extension}} \ // cxx98-warning {{'static_assert' with no message is a C++17 extension}} \ - // c2x-compat-warning {{'_Static_assert' with no message is incompatible with C standards before C2x}} \ + // c2x-compat-warning {{'_Static_assert' with no message is incompatible with C standards before C23}} \ // cxx17-compat-warning {{'static_assert' with no message is incompatible with C++ standards before C++17}} \ // c99-pedantic-warning {{'_Static_assert' is a C11 extension}} \ // cxx17-pedantic-warning {{'_Static_assert' is a C11 extension}} \ // cxx98-pedantic-warning {{'_Static_assert' is a C11 extension}} \ - // c17-warning {{'_Static_assert' with no message is a C2x extension}} \ - // c17-ms-warning {{'_Static_assert' with no message is a C2x extension}} + // c17-warning {{'_Static_assert' with no message is a C23 extension}} \ + // c17-ms-warning {{'_Static_assert' with no message is a C23 extension}} diff --git a/clang/test/Preprocessor/elifdef.c b/clang/test/Preprocessor/elifdef.c index 900d21e..419e229 100644 --- a/clang/test/Preprocessor/elifdef.c +++ b/clang/test/Preprocessor/elifdef.c @@ -1,13 +1,13 @@ // RUN: %clang_cc1 %s -Eonly -verify -/* expected-warning@+2 {{use of a '#elifdef' directive is a C2x extension}} */ +/* expected-warning@+2 {{use of a '#elifdef' directive is a C23 extension}} */ #ifdef FOO #elifdef BAR #error "did not expect to get here" #endif /* expected-error@+5 {{"got it"}} */ -/* expected-warning@+2 {{use of a '#elifdef' directive is a C2x extension}} */ +/* expected-warning@+2 {{use of a '#elifdef' directive is a C23 extension}} */ #ifdef FOO #elifdef BAR #else @@ -15,14 +15,14 @@ #endif /* expected-error@+4 {{"got it"}} */ -/* expected-warning@+2 {{use of a '#elifndef' directive is a C2x extension}} */ +/* expected-warning@+2 {{use of a '#elifndef' directive is a C23 extension}} */ #ifdef FOO #elifndef BAR #error "got it" #endif /* expected-error@+4 {{"got it"}} */ -/* expected-warning@+2 {{use of a '#elifndef' directive is a C2x extension}} */ +/* expected-warning@+2 {{use of a '#elifndef' directive is a C23 extension}} */ #ifdef FOO #elifndef BAR #error "got it" @@ -32,21 +32,21 @@ #define BAR /* expected-error@+4 {{"got it"}} */ -/* expected-warning@+2 {{use of a '#elifdef' directive is a C2x extension}} */ +/* expected-warning@+2 {{use of a '#elifdef' directive is a C23 extension}} */ #ifdef FOO #elifdef BAR #error "got it" #endif #undef BAR -/* expected-warning@+2 {{use of a '#elifdef' directive is a C2x extension}} */ +/* expected-warning@+2 {{use of a '#elifdef' directive is a C23 extension}} */ #ifdef FOO #elifdef BAR // test that comments aren't an issue #error "did not expect to get here" #endif /* expected-error@+5 {{"got it"}} */ -/* expected-warning@+2 {{use of a '#elifdef' directive is a C2x extension}} */ +/* expected-warning@+2 {{use of a '#elifdef' directive is a C23 extension}} */ #ifdef FOO #elifdef BAR // test that comments aren't an issue #else @@ -54,14 +54,14 @@ #endif /* expected-error@+4 {{"got it"}} */ -/* expected-warning@+2 {{use of a '#elifndef' directive is a C2x extension}} */ +/* expected-warning@+2 {{use of a '#elifndef' directive is a C23 extension}} */ #ifdef FOO #elifndef BAR // test that comments aren't an issue #error "got it" #endif /* expected-error@+4 {{"got it"}} */ -/* expected-warning@+2 {{use of a '#elifndef' directive is a C2x extension}} */ +/* expected-warning@+2 {{use of a '#elifndef' directive is a C23 extension}} */ #ifdef FOO #elifndef BAR // test that comments aren't an issue #error "got it" @@ -71,7 +71,7 @@ #define BAR /* expected-error@+4 {{"got it"}} */ -/* expected-warning@+2 {{use of a '#elifdef' directive is a C2x extension}} */ +/* expected-warning@+2 {{use of a '#elifdef' directive is a C23 extension}} */ #ifdef FOO #elifdef BAR // test that comments aren't an issue #error "got it" @@ -80,7 +80,7 @@ #define BAR /* expected-error@+7 {{"got it"}} */ -/* expected-warning@+3 {{use of a '#elifndef' directive is a C2x extension}} */ +/* expected-warning@+3 {{use of a '#elifndef' directive is a C23 extension}} */ #ifdef FOO #error "did not expect to get here" #elifndef BAR @@ -91,32 +91,32 @@ #undef BAR /* expected-error@+4 {{#elifdef after #else}} */ -/* expected-warning@+3 {{use of a '#elifdef' directive is a C2x extension}} */ +/* expected-warning@+3 {{use of a '#elifdef' directive is a C23 extension}} */ #ifdef FOO #else #elifdef BAR #endif /* expected-error@+4 {{#elifndef after #else}} */ -/* expected-warning@+3 {{use of a '#elifndef' directive is a C2x extension}} */ +/* expected-warning@+3 {{use of a '#elifndef' directive is a C23 extension}} */ #ifdef FOO #else #elifndef BAR #endif -/* expected-warning@+1 {{use of a '#elifdef' directive is a C2x extension}} */ +/* expected-warning@+1 {{use of a '#elifdef' directive is a C23 extension}} */ #elifdef FOO /* expected-error {{#elifdef without #if}} */ #endif /* expected-error {{#endif without #if}} */ -/* expected-warning@+1 {{use of a '#elifndef' directive is a C2x extension}} */ +/* expected-warning@+1 {{use of a '#elifndef' directive is a C23 extension}} */ #elifndef FOO /* expected-error {{#elifndef without #if}} */ #endif /* expected-error {{#endif without #if}} */ /* Note, we do not expect errors about the missing macro name in the skipped blocks. This is consistent with #elif behavior. */ /* expected-error@+4 {{"got it"}} */ -/* expected-warning@+4 {{use of a '#elifdef' directive is a C2x extension}} */ -/* expected-warning@+4 {{use of a '#elifndef' directive is a C2x extension}} */ +/* expected-warning@+4 {{use of a '#elifdef' directive is a C23 extension}} */ +/* expected-warning@+4 {{use of a '#elifndef' directive is a C23 extension}} */ #ifndef FOO #error "got it" #elifdef diff --git a/clang/test/Preprocessor/ext-pp-directive.c b/clang/test/Preprocessor/ext-pp-directive.c index a3d7414..0dcbb59d 100644 --- a/clang/test/Preprocessor/ext-pp-directive.c +++ b/clang/test/Preprocessor/ext-pp-directive.c @@ -18,8 +18,8 @@ int x; #elifdef A // #1 #endif // For C -// pre-c2x-pedantic-warning@#1 {{use of a '#elifdef' directive is a C2x extension}} -// pre-c2x-compat-warning@#1 {{use of a '#elifdef' directive is incompatible with C standards before C2x}} +// pre-c2x-pedantic-warning@#1 {{use of a '#elifdef' directive is a C23 extension}} +// pre-c2x-compat-warning@#1 {{use of a '#elifdef' directive is incompatible with C standards before C23}} // For C++ // pre-cpp23-pedantic-warning@#1 {{use of a '#elifdef' directive is a C++23 extension}} @@ -29,8 +29,8 @@ int x; #elifndef B // #2 #endif // For C -// pre-c2x-pedantic-warning@#2 {{use of a '#elifndef' directive is a C2x extension}} -// pre-c2x-compat-warning@#2 {{use of a '#elifndef' directive is incompatible with C standards before C2x}} +// pre-c2x-pedantic-warning@#2 {{use of a '#elifndef' directive is a C23 extension}} +// pre-c2x-compat-warning@#2 {{use of a '#elifndef' directive is incompatible with C standards before C23}} // For C++ // pre-cpp23-pedantic-warning@#2 {{use of a '#elifndef' directive is a C++23 extension}} @@ -40,8 +40,8 @@ int x; #elifdef C #endif // For C -// pre-c2x-pedantic-warning@-3 {{use of a '#elifdef' directive is a C2x extension}} -// pre-c2x-compat-warning@-4 {{use of a '#elifdef' directive is incompatible with C standards before C2x}} +// pre-c2x-pedantic-warning@-3 {{use of a '#elifdef' directive is a C23 extension}} +// pre-c2x-compat-warning@-4 {{use of a '#elifdef' directive is incompatible with C standards before C23}} // For C++ // pre-cpp23-pedantic-warning@-7 {{use of a '#elifdef' directive is a C++23 extension}} @@ -51,8 +51,8 @@ int x; #elifndef D #endif // For C -// pre-c2x-pedantic-warning@-3 {{use of a '#elifndef' directive is a C2x extension}} -// pre-c2x-compat-warning@-4 {{use of a '#elifndef' directive is incompatible with C standards before C2x}} +// pre-c2x-pedantic-warning@-3 {{use of a '#elifndef' directive is a C23 extension}} +// pre-c2x-compat-warning@-4 {{use of a '#elifndef' directive is incompatible with C standards before C23}} // For C++ // pre-cpp23-pedantic-warning@-7 {{use of a '#elifndef' directive is a C++23 extension}} @@ -60,9 +60,9 @@ int x; #warning foo // For C -// pre-c2x-pedantic-warning@-2 {{#warning is a C2x extension}} +// pre-c2x-pedantic-warning@-2 {{#warning is a C23 extension}} // pre-c2x-pedantic-warning@-3 {{foo}} -// pre-c2x-compat-warning@-4 {{#warning is incompatible with C standards before C2x}} +// pre-c2x-compat-warning@-4 {{#warning is incompatible with C standards before C23}} // pre-c2x-compat-warning@-5 {{foo}} // For C++ diff --git a/clang/test/Preprocessor/if_warning.c b/clang/test/Preprocessor/if_warning.c index 42c834b1..fb4fe18 100644 --- a/clang/test/Preprocessor/if_warning.c +++ b/clang/test/Preprocessor/if_warning.c @@ -5,7 +5,7 @@ extern int x; #if foo // expected-error {{'foo' is not defined, evaluates to 0}} #endif -// expected-warning@+2 {{use of a '#elifdef' directive is a C2x extension}} +// expected-warning@+2 {{use of a '#elifdef' directive is a C23 extension}} #ifdef foo #elifdef foo #endif @@ -15,7 +15,7 @@ extern int x; // PR3938 -// expected-warning@+3 {{use of a '#elifdef' directive is a C2x extension}} +// expected-warning@+3 {{use of a '#elifdef' directive is a C23 extension}} #if 0 #ifdef D #elifdef D diff --git a/clang/test/Preprocessor/ifdef-recover.c b/clang/test/Preprocessor/ifdef-recover.c index 33a5300..07d92a6 100644 --- a/clang/test/Preprocessor/ifdef-recover.c +++ b/clang/test/Preprocessor/ifdef-recover.c @@ -20,13 +20,13 @@ #endif /* expected-error@+3 {{macro name missing}} */ -/* expected-warning@+2 {{use of a '#elifdef' directive is a C2x extension}} */ +/* expected-warning@+2 {{use of a '#elifdef' directive is a C23 extension}} */ #ifdef FOO #elifdef #endif /* expected-error@+3 {{macro name must be an identifier}} */ -/* expected-warning@+2 {{use of a '#elifdef' directive is a C2x extension}} */ +/* expected-warning@+2 {{use of a '#elifdef' directive is a C23 extension}} */ #ifdef FOO #elifdef ! #endif diff --git a/clang/test/Preprocessor/macro_misc.c b/clang/test/Preprocessor/macro_misc.c index f80ab71..eabd6da 100644 --- a/clang/test/Preprocessor/macro_misc.c +++ b/clang/test/Preprocessor/macro_misc.c @@ -4,7 +4,7 @@ #ifdef defined #elifdef defined #endif -// expected-warning@-2 {{use of a '#elifdef' directive is a C2x extension}} +// expected-warning@-2 {{use of a '#elifdef' directive is a C23 extension}} diff --git a/clang/test/Sema/arg-duplicate.c b/clang/test/Sema/arg-duplicate.c index d0034cd..32ae139 100644 --- a/clang/test/Sema/arg-duplicate.c +++ b/clang/test/Sema/arg-duplicate.c @@ -1,6 +1,6 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c99 -int f3(y, x, // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +int f3(y, x, // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} x) // expected-error {{redefinition of parameter}} int y, x, // expected-note {{previous declaration is here}} diff --git a/clang/test/Sema/array-init.c b/clang/test/Sema/array-init.c index 0e23a7d..5066b32 100644 --- a/clang/test/Sema/array-init.c +++ b/clang/test/Sema/array-init.c @@ -64,7 +64,7 @@ void test(void) { { 2, 4, 6 }, { 3, 5, 7 }, { 4, 6, 8 }, - { }, // pedantic-warning{{use of an empty initializer is a C2x extension}} expected-warning{{excess elements in array initializer}} + { }, // pedantic-warning{{use of an empty initializer is a C23 extension}} expected-warning{{excess elements in array initializer}} }; int y4[4][3] = { { 1, 3, 5, 2 }, // expected-warning{{excess elements in array initializer}} @@ -175,7 +175,7 @@ void charArrays(void) { char c3[5] = { "Hello" }; char c4[4] = { "Hello" }; //expected-warning{{initializer-string for char array is too long}} - int i3[] = {}; //expected-warning{{zero size arrays are an extension}} pedantic-warning{{use of an empty initializer is a C2x extension}} + int i3[] = {}; //expected-warning{{zero size arrays are an extension}} pedantic-warning{{use of an empty initializer is a C23 extension}} } void variableArrayInit(void) { @@ -197,7 +197,7 @@ const char r7[] = "zxcv"; char r8[5] = "5char"; char r9[5] = "6chars"; //expected-warning{{initializer-string for char array is too long}} unsigned char r10[] = __extension__ (_Generic(0, int: (__extension__ "foo" ))); -int r11[0] = {}; //expected-warning{{zero size arrays are an extension}} pedantic-warning{{use of an empty initializer is a C2x extension}} +int r11[0] = {}; //expected-warning{{zero size arrays are an extension}} pedantic-warning{{use of an empty initializer is a C23 extension}} // Some struct tests void autoStructTest(void) { @@ -221,7 +221,7 @@ int t8[sizeof t7 == (3*sizeof(int)) ? 1 : -1]; struct bittest{int : 31, a, :21, :12, b;}; struct bittest bittestvar = {1, 2, 3, 4}; //expected-warning{{excess elements in struct initializer}} -int u1 = {}; //pedantic-warning{{use of an empty initializer is a C2x extension}} +int u1 = {}; //pedantic-warning{{use of an empty initializer is a C23 extension}} int u2 = {{3}}; //expected-warning{{too many braces around scalar initializer}} // PR2362 diff --git a/clang/test/Sema/block-args.c b/clang/test/Sema/block-args.c index 1e000ab..1966613 100644 --- a/clang/test/Sema/block-args.c +++ b/clang/test/Sema/block-args.c @@ -31,8 +31,8 @@ int main(int argc, char** argv) { // radar 7528255 void f0(void) { - ^(int, double d, char) {}(1, 1.34, 'a'); // expected-warning {{omitting the parameter name in a function definition is a C2x extension}} \ - // expected-warning {{omitting the parameter name in a function definition is a C2x extension}} + ^(int, double d, char) {}(1, 1.34, 'a'); // expected-warning {{omitting the parameter name in a function definition is a C23 extension}} \ + // expected-warning {{omitting the parameter name in a function definition is a C23 extension}} } // rdar://problem/8962770 diff --git a/clang/test/Sema/c2x-attr.c b/clang/test/Sema/c2x-attr.c index dbeafb2..142bb94 100644 --- a/clang/test/Sema/c2x-attr.c +++ b/clang/test/Sema/c2x-attr.c @@ -1,5 +1,5 @@ // RUN: %clang_cc1 -fsyntax-only -std=c2x -Wpre-c2x-compat -verify=pre-c2x %s // RUN: %clang_cc1 -fsyntax-only -std=c17 -Wc2x-extensions -verify=c2x-ext %s -[[]] void func(); // pre-c2x-warning {{[[]] attributes are incompatible with C standards before C2x}} - // c2x-ext-warning@-1 {{[[]] attributes are a C2x extension}} +[[]] void func(); // pre-c2x-warning {{[[]] attributes are incompatible with C standards before C23}} + // c2x-ext-warning@-1 {{[[]] attributes are a C23 extension}} diff --git a/clang/test/Sema/c2x-func-prototype.c b/clang/test/Sema/c2x-func-prototype.c index 46bce46..c62c6ed 100644 --- a/clang/test/Sema/c2x-func-prototype.c +++ b/clang/test/Sema/c2x-func-prototype.c @@ -16,7 +16,7 @@ void call(void) { fp nope = other_func; // c2x-error {{incompatible function pointer types initializing 'fp' (aka 'void (*)(void)') with an expression of type 'void (int)'}} } -// Ensure these function declarations do not merge in C2x. +// Ensure these function declarations do not merge in C23. void redecl1(); // c2x-note {{previous declaration is here}} void redecl1(int i); // c2x-error {{conflicting types for 'redecl1'}} diff --git a/clang/test/Sema/c2x-noreturn.c b/clang/test/Sema/c2x-noreturn.c index 18b630d..d94fd1b 100644 --- a/clang/test/Sema/c2x-noreturn.c +++ b/clang/test/Sema/c2x-noreturn.c @@ -33,7 +33,7 @@ _Noreturn void func1(void); // ok, using the function specifier // This is deprecated because it's only for compatibility with inclusion of the // <stdnoreturn.h> header where the noreturn macro expands to _Noreturn. -[[_Noreturn]] void func3(void); // all-warning {{the '[[_Noreturn]]' attribute spelling is deprecated in C2x; use '[[noreturn]]' instead}} +[[_Noreturn]] void func3(void); // all-warning {{the '[[_Noreturn]]' attribute spelling is deprecated in C23; use '[[noreturn]]' instead}} // Test the behavior of including <stdnoreturn.h> #include <stdnoreturn.h> @@ -48,7 +48,7 @@ noreturn void func8(void); void noreturn func9(void); // Ensure that spelling the deprecated form of the attribute is still diagnosed. -[[_Noreturn]] void func10(void); // all-warning {{the '[[_Noreturn]]' attribute spelling is deprecated in C2x; use '[[noreturn]]' instead}} +[[_Noreturn]] void func10(void); // all-warning {{the '[[_Noreturn]]' attribute spelling is deprecated in C23; use '[[noreturn]]' instead}} // Test preprocessor functionality after including <stdnoreturn.h>. #if !__has_c_attribute(noreturn) @@ -62,4 +62,4 @@ void noreturn func9(void); // Test that a macro which expands to _Noreturn is still diagnosed when it // doesn't come from a system header. #define NORETURN _Noreturn -[[NORETURN]] void func11(void); // all-warning {{the '[[_Noreturn]]' attribute spelling is deprecated in C2x; use '[[noreturn]]' instead}} +[[NORETURN]] void func11(void); // all-warning {{the '[[_Noreturn]]' attribute spelling is deprecated in C23; use '[[noreturn]]' instead}} diff --git a/clang/test/Sema/c89.c b/clang/test/Sema/c89.c index 0bbd14e..e89f4fd 100644 --- a/clang/test/Sema/c89.c +++ b/clang/test/Sema/c89.c @@ -44,7 +44,7 @@ test7; void test8(int, x); typedef int sometype; -int a(sometype, y) {return 0;} /* expected-warning {{omitting the parameter name in a function definition is a C2x extension}}*/ +int a(sometype, y) {return 0;} /* expected-warning {{omitting the parameter name in a function definition is a C23 extension}}*/ void bar (void *); void f11 (z) /* expected-error {{may not have 'void' type}} */ diff --git a/clang/test/Sema/complex-init-list.c b/clang/test/Sema/complex-init-list.c index ac220d8..ce1cf2a 100644 --- a/clang/test/Sema/complex-init-list.c +++ b/clang/test/Sema/complex-init-list.c @@ -38,7 +38,7 @@ _Complex float valid5 = {1.0f, 1.0fi}; // expected-warning {{imaginary constants struct teststruct invalid1 = { 1, 2 }; // expected-warning {{excess elements}} _Complex float invalid2 = { 1, 2, 3 }; // expected-warning {{specifying real and imaginary components is an extension}} \ // expected-warning {{excess elements in scalar initializer}} -_Complex float invalid3 = {}; // expected-warning {{use of an empty initializer is a C2x extension}} +_Complex float invalid3 = {}; // expected-warning {{use of an empty initializer is a C23 extension}} // Check incomplete array sizing diff --git a/clang/test/Sema/compound-literal.c b/clang/test/Sema/compound-literal.c index 46fa41e..1b18df1 100644 --- a/clang/test/Sema/compound-literal.c +++ b/clang/test/Sema/compound-literal.c @@ -14,7 +14,7 @@ static int *p2 = (int []){2,x}; // expected-error {{initializer element is not a static long *p3 = (long []){2,"x"}; // expected-error {{incompatible pointer to integer conversion initializing 'long' with an expression of type 'char[2]'}} typedef struct { } cache_t; // expected-warning{{empty struct is a GNU extension}} -static cache_t clo_I1_cache = ((cache_t) { } ); // expected-warning{{use of an empty initializer is a C2x extension}} +static cache_t clo_I1_cache = ((cache_t) { } ); // expected-warning{{use of an empty initializer is a C23 extension}} typedef struct Test {int a;int b;} Test; static Test* ll = &(Test) {0,0}; diff --git a/clang/test/Sema/empty-init.c b/clang/test/Sema/empty-init.c index 8cb4a77..db02080 100644 --- a/clang/test/Sema/empty-init.c +++ b/clang/test/Sema/empty-init.c @@ -17,13 +17,13 @@ struct S { int a; }; -struct S s = {}; /* c2x-warning {{use of an empty initializer is incompatible with C standards before C2x}} - c2x-ext-warning {{use of an empty initializer is a C2x extension}} +struct S s = {}; /* c2x-warning {{use of an empty initializer is incompatible with C standards before C23}} + c2x-ext-warning {{use of an empty initializer is a C23 extension}} */ void func(void) { - struct S s2 = {}; /* c2x-warning {{use of an empty initializer is incompatible with C standards before C2x}} - c2x-ext-warning {{use of an empty initializer is a C2x extension}} + struct S s2 = {}; /* c2x-warning {{use of an empty initializer is incompatible with C standards before C23}} + c2x-ext-warning {{use of an empty initializer is a C23 extension}} */ (void)s2; } diff --git a/clang/test/Sema/flexible-array-init.c b/clang/test/Sema/flexible-array-init.c index 57c7344..5ae85e5 100644 --- a/clang/test/Sema/flexible-array-init.c +++ b/clang/test/Sema/flexible-array-init.c @@ -10,7 +10,7 @@ void test(void) { struct one x3 = {5, {1, 2, 3}}; // expected-error{{initialization of flexible array member is not allowed}} struct one x3a = { 5 }; struct one x3b = { .a = 5 }; - struct one x3c = { 5, {} }; // expected-warning{{use of an empty initializer is a C2x extension}} \ + struct one x3c = { 5, {} }; // expected-warning{{use of an empty initializer is a C23 extension}} \ // expected-warning{{flexible array initialization is a GNU extension}} \ // expected-warning{{zero size arrays are an extension}} } @@ -24,13 +24,13 @@ struct bar { struct foo z; }; // expected-warning {{'z' may not be nested in a s struct foo a = { 1, { 2, 3, 4 } }; // expected-warning{{flexible array initialization is a GNU extension}} struct bar b = { { 1, { 2, 3, 4 } } }; // expected-error{{initialization of flexible array member is not allowed}} struct bar c = { { 1, { } } }; // // expected-warning{{flexible array initialization is a GNU extension}} \ - // expected-warning{{use of an empty initializer is a C2x extension}} \ + // expected-warning{{use of an empty initializer is a C23 extension}} \ // expected-warning{{zero size arrays are an extension}} struct foo d[1] = { { 1, { 2, 3, 4 } } }; // expected-warning{{'struct foo' may not be used as an array element due to flexible array member}} \ // expected-error{{initialization of flexible array member is not allowed}} struct foo desig_foo = { .y = {2, 3, 4} }; // expected-warning{{flexible array initialization is a GNU extension}} -struct bar desig_bar = { .z.y = { } }; // expected-warning{{use of an empty initializer is a C2x extension}} \ +struct bar desig_bar = { .z.y = { } }; // expected-warning{{use of an empty initializer is a C23 extension}} \ // expected-warning{{zero size arrays are an extension}} \ // expected-warning{{flexible array initialization is a GNU extension}} struct bar desig_bar2 = { .z.y = { 2, 3, 4} }; // expected-error{{initialization of flexible array member is not allowed}} diff --git a/clang/test/Sema/function.c b/clang/test/Sema/function.c index 1143fe8..bdaa1e4 100644 --- a/clang/test/Sema/function.c +++ b/clang/test/Sema/function.c @@ -30,7 +30,7 @@ void t10(){} void t11(){t10(1);} // expected-warning{{too many arguments}} // PR3208 -void t12(int) {} // c2x-warning{{omitting the parameter name in a function definition is a C2x extension}} +void t12(int) {} // c2x-warning{{omitting the parameter name in a function definition is a C23 extension}} // PR2790 void t13() { @@ -81,7 +81,7 @@ fn_t t17; // PR4049 unknown_type t18(void*) { // expected-error {{unknown type name 'unknown_type'}} \ - // c2x-warning {{omitting the parameter name in a function definition is a C2x extension}} + // c2x-warning {{omitting the parameter name in a function definition is a C23 extension}} } unknown_type t19(int* P) { // expected-error {{unknown type name 'unknown_type'}} diff --git a/clang/test/Sema/knr-def-call.c b/clang/test/Sema/knr-def-call.c index 172cb07..6f13ac4 100644 --- a/clang/test/Sema/knr-def-call.c +++ b/clang/test/Sema/knr-def-call.c @@ -1,19 +1,19 @@ // RUN: %clang_cc1 -triple i386-pc-unknown -Wconversion -Wliteral-conversion -fsyntax-only -verify %s // C DR #316, PR 3626. -void f0(a, b, c, d) int a,b,c,d; {} // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +void f0(a, b, c, d) int a,b,c,d; {} // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} void t0(void) { f0(1); // expected-warning{{too few arguments}} } -void f1(a, b) int a, b; {} // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +void f1(a, b) int a, b; {} // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} void t1(void) { f1(1, 2, 3); // expected-warning{{too many arguments}} } void f2(float); // expected-note{{previous declaration is here}} void f2(x) float x; { } // expected-warning{{promoted type 'double' of K&R function parameter is not compatible with the parameter type 'float' declared in a previous prototype}} \ - expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} + expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} typedef void (*f3)(void); f3 t3(int b) { return b? f0 : f1; } // okay @@ -33,7 +33,7 @@ char *rindex(s, c) // PR8314 void proto(int); -void proto(x) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +void proto(x) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} int x; { } @@ -45,6 +45,6 @@ void use_proto() { // PR31020 void func(short d) __attribute__((cdecl)); // expected-note{{previous declaration is here}} -void __attribute__((cdecl)) func(d) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +void __attribute__((cdecl)) func(d) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} short d; // expected-warning{{promoted type 'int' of K&R function parameter is not compatible with the parameter type 'short' declared in a previous prototype}} {} diff --git a/clang/test/Sema/knr-variadic-def.c b/clang/test/Sema/knr-variadic-def.c index 18ca866..d5b49f5 100644 --- a/clang/test/Sema/knr-variadic-def.c +++ b/clang/test/Sema/knr-variadic-def.c @@ -5,7 +5,7 @@ char *foo = "test"; int test(char*,...); -int test(fmt) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +int test(fmt) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} char*fmt; { va_list ap; @@ -21,7 +21,7 @@ int test(fmt) // expected-warning {{a function definition without a prototype is void exit(); // expected-warning {{a function declaration without a prototype is deprecated in all versions of C}} -int main(argc,argv) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +int main(argc,argv) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} int argc;char**argv; { exit(test("",foo)); diff --git a/clang/test/Sema/matrix-type-builtins.c b/clang/test/Sema/matrix-type-builtins.c index 43f39f2..b554883 100644 --- a/clang/test/Sema/matrix-type-builtins.c +++ b/clang/test/Sema/matrix-type-builtins.c @@ -8,17 +8,17 @@ typedef unsigned ix3x3 __attribute__((matrix_type(3, 3))); // Verify that we can use the [[]] spelling of the attribute. // We intentionally use the same type alias name to check that both versions // define the same type. -typedef float [[clang::matrix_type(5, 10)]] sx5x10_t; // expected-warning {{[[]] attributes are a C2x extension}} -typedef int [[clang::matrix_type(3, 2)]] ix3x2_t; // expected-warning {{[[]] attributes are a C2x extension}} -[[clang::matrix_type(5, 10)]] typedef float sx5x10_t; // expected-warning {{[[]] attributes are a C2x extension}} +typedef float [[clang::matrix_type(5, 10)]] sx5x10_t; // expected-warning {{[[]] attributes are a C23 extension}} +typedef int [[clang::matrix_type(3, 2)]] ix3x2_t; // expected-warning {{[[]] attributes are a C23 extension}} +[[clang::matrix_type(5, 10)]] typedef float sx5x10_t; // expected-warning {{[[]] attributes are a C23 extension}} // expected-warning@-1 {{applying attribute 'matrix_type' to a declaration is deprecated; apply it to the type instead}} -[[clang::matrix_type(3, 2)]] typedef int ix3x2_t; // expected-warning {{[[]] attributes are a C2x extension}} +[[clang::matrix_type(3, 2)]] typedef int ix3x2_t; // expected-warning {{[[]] attributes are a C23 extension}} // expected-warning@-1 {{applying attribute 'matrix_type' to a declaration is deprecated; apply it to the type instead}} // Attribute may not be used outside typedefs. -[[clang::matrix_type(3, 2)]] int ix3x2_var; // expected-warning {{[[]] attributes are a C2x extension}} +[[clang::matrix_type(3, 2)]] int ix3x2_var; // expected-warning {{[[]] attributes are a C23 extension}} // expected-error@-1 {{'matrix_type' attribute only applies to typedefs}} -int [[clang::matrix_type(3, 2)]] ix3x2_var; // expected-warning {{[[]] attributes are a C2x extension}} +int [[clang::matrix_type(3, 2)]] ix3x2_var; // expected-warning {{[[]] attributes are a C23 extension}} // expected-error@-1 {{'matrix_type' attribute only applies to typedefs}} void transpose(sx5x10_t a, ix3x2_t b, dx3x3 c, int *d, int e) { diff --git a/clang/test/Sema/nullptr-prec2x.c b/clang/test/Sema/nullptr-prec2x.c index 387746f..39479d4 100644 --- a/clang/test/Sema/nullptr-prec2x.c +++ b/clang/test/Sema/nullptr-prec2x.c @@ -2,7 +2,7 @@ #include <stddef.h> -int nullptr; // expected-warning {{'nullptr' is a keyword in C2x}} +int nullptr; // expected-warning {{'nullptr' is a keyword in C23}} nullptr_t val; // expected-error {{unknown type name 'nullptr_t'}} diff --git a/clang/test/Sema/pre-c2x-compat.c b/clang/test/Sema/pre-c2x-compat.c index cf40efb..fad472f 100644 --- a/clang/test/Sema/pre-c2x-compat.c +++ b/clang/test/Sema/pre-c2x-compat.c @@ -1,3 +1,3 @@ // RUN: %clang_cc1 %s -std=c2x -Wpre-c2x-compat -pedantic -fsyntax-only -verify -int digit_seps = 123'456; // expected-warning {{digit separators are incompatible with C standards before C2x}} +int digit_seps = 123'456; // expected-warning {{digit separators are incompatible with C standards before C23}} diff --git a/clang/test/Sema/vector-gcc-compat.c b/clang/test/Sema/vector-gcc-compat.c index a3107945c..7764b3b 100644 --- a/clang/test/Sema/vector-gcc-compat.c +++ b/clang/test/Sema/vector-gcc-compat.c @@ -20,14 +20,14 @@ typedef int v4i32 __attribute((vector_size(16))); // Verify that we can use the [[]] spelling of the attribute. // We intentionally use the same type alias name to check that both versions // define the same type. -typedef long long v2i64 [[gnu::vector_size(16)]]; // expected-warning{{[[]] attributes are a C2x extension}} -typedef int v2i32 [[gnu::vector_size(8)]]; // expected-warning{{[[]] attributes are a C2x extension}} +typedef long long v2i64 [[gnu::vector_size(16)]]; // expected-warning{{[[]] attributes are a C23 extension}} +typedef int v2i32 [[gnu::vector_size(8)]]; // expected-warning{{[[]] attributes are a C23 extension}} // Check various positions where the [[]] spelling can or cannot be used. -[[gnu::vector_size(16)]] typedef long long v2i64; // expected-warning{{[[]] attributes are a C2x extension}} +[[gnu::vector_size(16)]] typedef long long v2i64; // expected-warning{{[[]] attributes are a C23 extension}} typedef long long [[gnu::vector_size(16)]] v2i64_ignored; // expected-warning@-1{{'vector_size' attribute ignored}} - // expected-warning@-2{{[[]] attributes are a C2x extension}} + // expected-warning@-2{{[[]] attributes are a C23 extension}} // FIXME: Contrary to the error message that we emit, GCC does actually allow // the attribute in the following position. Somewhat surprisingly, the attribute // is applied not to the pointer but to the base type, i.e. this declaration has @@ -35,10 +35,10 @@ typedef long long [[gnu::vector_size(16)]] v2i64_ignored; typedef long long *[[gnu::vector_size(16)]] v2i64_doesnt_work; // expected-error@-1{{invalid vector element type 'long long *'}} // expected-warning@-2{{GCC does not allow the 'vector_size' attribute to be written on a type}} - // expected-warning@-3{{[[]] attributes are a C2x extension}} + // expected-warning@-3{{[[]] attributes are a C23 extension}} // Verify that we can use the attribute outside of a typedef. -static int v2i32_var [[gnu::vector_size(8)]]; // expected-warning{{[[]] attributes are a C2x extension}} +static int v2i32_var [[gnu::vector_size(8)]]; // expected-warning{{[[]] attributes are a C23 extension}} void arithmeticTest(void); void logicTest(void); diff --git a/clang/test/Sema/vla.c b/clang/test/Sema/vla.c index efdc11b..54afe7c 100644 --- a/clang/test/Sema/vla.c +++ b/clang/test/Sema/vla.c @@ -113,14 +113,14 @@ void test_fold_to_constant_array(void) { jump_over_a2:; goto jump_over_a3; - char a3[ksize] = {}; // expected-warning {{variable length array folded to constant array as an extension}} expected-warning{{use of an empty initializer is a C2x extension}} + char a3[ksize] = {}; // expected-warning {{variable length array folded to constant array as an extension}} expected-warning{{use of an empty initializer is a C23 extension}} jump_over_a3:; goto jump_over_a4; // expected-error{{cannot jump from this goto statement to its label}} char a4[ksize][2]; // expected-note{{variable length array}} jump_over_a4:; - char a5[ksize][2] = {}; // expected-warning {{variable length array folded to constant array as an extension}} expected-warning{{use of an empty initializer is a C2x extension}} + char a5[ksize][2] = {}; // expected-warning {{variable length array folded to constant array as an extension}} expected-warning{{use of an empty initializer is a C23 extension}} int a6[ksize] = {1,2,3,4}; // expected-warning{{variable length array folded to constant array as an extension}} diff --git a/clang/test/Sema/warn-deprecated-non-prototype.c b/clang/test/Sema/warn-deprecated-non-prototype.c index 4799493..4072281 100644 --- a/clang/test/Sema/warn-deprecated-non-prototype.c +++ b/clang/test/Sema/warn-deprecated-non-prototype.c @@ -23,37 +23,37 @@ void whatever(void) { void again() {} // strict-warning {{a function declaration without a prototype is deprecated in all versions of C}} // On by default warnings -void func(); // both-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C2x, conflicting with a subsequent definition}} \ +void func(); // both-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C23, conflicting with a subsequent definition}} \ strict-warning {{a function declaration without a prototype is deprecated in all versions of C}} -void func(a, b) int a, b; {} // both-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +void func(a, b) int a, b; {} // both-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} -void one_more(a, b) int a, b; {} // both-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +void one_more(a, b) int a, b; {} // both-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} void sheesh(int a); -void sheesh(a) int a; {} // both-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +void sheesh(a) int a; {} // both-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} void another(); // strict-warning {{a function declaration without a prototype is deprecated in all versions of C}} int main(void) { - another(1, 2); // both-warning {{passing arguments to 'another' without a prototype is deprecated in all versions of C and is not supported in C2x}} + another(1, 2); // both-warning {{passing arguments to 'another' without a prototype is deprecated in all versions of C and is not supported in C23}} } -void order1(); // both-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C2x, conflicting with a subsequent declaration}} \ +void order1(); // both-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C23, conflicting with a subsequent declaration}} \ strict-warning {{a function declaration without a prototype is deprecated in all versions of C}} void order1(int i); // both-note {{conflicting prototype is here}} void order2(int i); // both-note {{conflicting prototype is here}} -void order2(); // both-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C2x, conflicting with a previous declaration}} \ +void order2(); // both-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C23, conflicting with a previous declaration}} \ strict-warning {{a function declaration without a prototype is deprecated in all versions of C}} -void order3(); // both-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C2x, conflicting with a subsequent definition}} \ +void order3(); // both-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C23, conflicting with a subsequent definition}} \ strict-warning {{a function declaration without a prototype is deprecated in all versions of C}} void order3(int i) {} // both-note {{conflicting prototype is here}} // Just because the prototype is variadic doesn't mean we shouldn't warn on the -// K&R C function definition; this still changes behavior in C2x. +// K&R C function definition; this still changes behavior in C23. void test(char*,...); -void test(fmt) // both-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +void test(fmt) // both-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} char*fmt; { } @@ -80,7 +80,7 @@ void calls(void) { // Ensure that we diagnose calls to functions without a prototype, but only // if they pass arguments. never_defined(); // OK - never_defined(1); // both-warning {{passing arguments to 'never_defined' without a prototype is deprecated in all versions of C and is not supported in C2x}} + never_defined(1); // both-warning {{passing arguments to 'never_defined' without a prototype is deprecated in all versions of C and is not supported in C23}} // Ensure that calls to builtins without a traditional prototype are not // diagnosed. @@ -93,7 +93,7 @@ void calls(void) { // Ensure that a call through a function pointer is still diagnosed properly. fp f; f(); // OK - f(1, 2); // both-warning {{passing arguments to a function without a prototype is deprecated in all versions of C and is not supported in C2x}} + f(1, 2); // both-warning {{passing arguments to a function without a prototype is deprecated in all versions of C and is not supported in C23}} // Ensure that we don't diagnose when the diagnostic group is disabled. depr_non_prot(1); // OK @@ -110,7 +110,7 @@ void calls(void) { // prototype twice when the function was declared static in the following // example. static int GH58181(int x, int y); -static int GH58181(x, y) // both-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +static int GH58181(x, y) // both-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} int x; int y; { diff --git a/clang/test/Sema/warn-strict-prototypes.c b/clang/test/Sema/warn-strict-prototypes.c index 21e6f8e..66bc80f 100644 --- a/clang/test/Sema/warn-strict-prototypes.c +++ b/clang/test/Sema/warn-strict-prototypes.c @@ -48,7 +48,7 @@ void bar3(void) { } // K&R function definition not preceded by full prototype -int foo9(a, b) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +int foo9(a, b) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} int a, b; { return a + b; @@ -56,17 +56,17 @@ int foo9(a, b) // expected-warning {{a function definition without a prototype i // Function declaration with no types void foo10(); // expected-warning {{a function declaration without a prototype is deprecated in all versions of C}} \ - expected-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C2x, conflicting with a subsequent definition}} + expected-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C23, conflicting with a subsequent definition}} // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"void" // K&R function definition with incomplete param list declared -void foo10(p, p2) void *p; {} // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} \ +void foo10(p, p2) void *p; {} // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} \ expected-warning {{parameter 'p2' was not declared, defaults to 'int'; ISO C99 and later do not support implicit int}} void foo11(int p, int p2); -void foo11(p, p2) int p; int p2; {} // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +void foo11(p, p2) int p; int p2; {} // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} // PR31020 -void __attribute__((cdecl)) foo12(d) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C2x}} +void __attribute__((cdecl)) foo12(d) // expected-warning {{a function definition without a prototype is deprecated in all versions of C and is not supported in C23}} short d; {} diff --git a/clang/test/SemaObjC/nonnull.m b/clang/test/SemaObjC/nonnull.m index 218aad8..18a0511 100644 --- a/clang/test/SemaObjC/nonnull.m +++ b/clang/test/SemaObjC/nonnull.m @@ -22,7 +22,7 @@ __attribute__((nonnull(1,3))); extern void func4 (void (^block1)(), void (^block2)()) __attribute__((nonnull(1))) __attribute__((nonnull(2))); -void func6(); // expected-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C2x, conflicting with a subsequent definition}} +void func6(); // expected-warning {{a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C23, conflicting with a subsequent definition}} void func7(); void @@ -41,8 +41,8 @@ foo (int i1, int i2, int i3, void (^cp1)(), void (^cp2)(), void (^cp3)()) func4(0, cp1); // expected-warning {{null passed to a callee that requires a non-null argument}} func4(cp1, 0); // expected-warning {{null passed to a callee that requires a non-null argument}} - func6((NSObject*) 0); // expected-warning {{passing arguments to 'func6' without a prototype is deprecated in all versions of C and is not supported in C2x}} - func7((NSObject*) 0); // expected-warning {{passing arguments to 'func7' without a prototype is deprecated in all versions of C and is not supported in C2x}} + func6((NSObject*) 0); // expected-warning {{passing arguments to 'func6' without a prototype is deprecated in all versions of C and is not supported in C23}} + func7((NSObject*) 0); // expected-warning {{passing arguments to 'func7' without a prototype is deprecated in all versions of C and is not supported in C23}} } void func5(int) NONNULL_ATTR; // no warning |