Author: Imad Aldij Date: 2025-03-14T09:50:40-04:00 New Revision: b43620661d16c78c9fc5d4c1cfdb5340157c13e1
URL: https://github.com/llvm/llvm-project/commit/b43620661d16c78c9fc5d4c1cfdb5340157c13e1 DIFF: https://github.com/llvm/llvm-project/commit/b43620661d16c78c9fc5d4c1cfdb5340157c13e1.diff LOG: [clang] Fix inaccurate wording of warn_second_arg_of_va_start_not_last_named_param (#131238) Rename and update the wording of `warn_second_arg_of_va_start_not_last_named_param` to best indicate that it's actually the last non-variadic parameter instead. Fixes #131171 Added: Modified: clang/include/clang/Basic/DiagnosticSemaKinds.td clang/lib/Sema/SemaChecking.cpp clang/test/C/C23/n2975.c clang/test/Sema/varargs-x86-64.c clang/test/Sema/varargs.c clang/test/SemaCXX/vararg-non-pod.cpp clang/test/SemaCXX/varargs.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 8e6e6e892cdd7..135d3bd161356 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -10613,8 +10613,8 @@ def err_va_start_used_in_wrong_abi_function : Error< "'va_start' used in %select{System V|Win64}0 ABI function">; def err_ms_va_start_used_in_sysv_function : Error< "'__builtin_ms_va_start' used in System V ABI function">; -def warn_second_arg_of_va_start_not_last_named_param : Warning< - "second argument to 'va_start' is not the last named parameter">, +def warn_second_arg_of_va_start_not_last_non_variadic_param : Warning< + "second argument to 'va_start' is not the last non-variadic parameter">, InGroup<Varargs>; def warn_c17_compat_ellipsis_only_parameter : Warning< "'...' as the only parameter of a function is incompatible with C standards " diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 9bcb014ab9bfc..e99e30d75df94 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -4893,7 +4893,7 @@ bool Sema::BuiltinVAStart(unsigned BuiltinID, CallExpr *TheCall) { if (!SecondArgIsLastNamedArgument) Diag(TheCall->getArg(1)->getBeginLoc(), - diag::warn_second_arg_of_va_start_not_last_named_param); + diag::warn_second_arg_of_va_start_not_last_non_variadic_param); else if (IsCRegister || Type->isReferenceType() || Type->isSpecificBuiltinType(BuiltinType::Float) || [=] { // Promotable integers are UB, but enumerations need a bit of diff --git a/clang/test/C/C23/n2975.c b/clang/test/C/C23/n2975.c index 2269400fe47c3..338f987f6a65d 100644 --- a/clang/test/C/C23/n2975.c +++ b/clang/test/C/C23/n2975.c @@ -46,7 +46,7 @@ void diag(int a, int b, ...) { va_start(list, a); // However, the builtin itself is under no such constraints regarding // expanding or evaluating the second argument, so it can still diagnose. - __builtin_va_start(list, a); // expected-warning {{second argument to 'va_start' is not the last named parameter}} + __builtin_va_start(list, a); // expected-warning {{second argument to 'va_start' is not the last non-variadic parameter}} va_end(list); } diff --git a/clang/test/Sema/varargs-x86-64.c b/clang/test/Sema/varargs-x86-64.c index f3164400d8479..ff7fdd533ab0b 100644 --- a/clang/test/Sema/varargs-x86-64.c +++ b/clang/test/Sema/varargs-x86-64.c @@ -20,8 +20,8 @@ void __attribute__((ms_abi)) g1(int a) { void __attribute__((ms_abi)) g2(int a, int b, ...) { __builtin_ms_va_list ap; - __builtin_ms_va_start(ap, 10); // expected-warning {{second argument to 'va_start' is not the last named parameter}} - __builtin_ms_va_start(ap, a); // expected-warning {{second argument to 'va_start' is not the last named parameter}} + __builtin_ms_va_start(ap, 10); // expected-warning {{second argument to 'va_start' is not the last non-variadic parameter}} + __builtin_ms_va_start(ap, a); // expected-warning {{second argument to 'va_start' is not the last non-variadic parameter}} __builtin_ms_va_start(ap, b); } diff --git a/clang/test/Sema/varargs.c b/clang/test/Sema/varargs.c index bec41dda65d57..315589ff3fd16 100644 --- a/clang/test/Sema/varargs.c +++ b/clang/test/Sema/varargs.c @@ -14,8 +14,8 @@ void f2(int a, int b, ...) { __builtin_va_list ap; - __builtin_va_start(ap, 10); // expected-warning {{second argument to 'va_start' is not the last named parameter}} - __builtin_va_start(ap, a); // expected-warning {{second argument to 'va_start' is not the last named parameter}} + __builtin_va_start(ap, 10); // expected-warning {{second argument to 'va_start' is not the last non-variadic parameter}} + __builtin_va_start(ap, a); // expected-warning {{second argument to 'va_start' is not the last non-variadic parameter}} __builtin_va_start(ap, b); } diff --git a/clang/test/SemaCXX/vararg-non-pod.cpp b/clang/test/SemaCXX/vararg-non-pod.cpp index 0c24ced40f7aa..0744004fdeaef 100644 --- a/clang/test/SemaCXX/vararg-non-pod.cpp +++ b/clang/test/SemaCXX/vararg-non-pod.cpp @@ -167,7 +167,7 @@ void t6(Foo somearg, ... ) { // it should behave the same void t6b(Foo somearg, ... ) { __builtin_va_list list; - __builtin_stdarg_start(list, somearg); // second argument to 'va_start' is not the last named parameter [-Wvarargs] + __builtin_stdarg_start(list, somearg); // second argument to 'va_start' is not the last non-variadic parameter [-Wvarargs] } void t7(int n, ...) { diff --git a/clang/test/SemaCXX/varargs.cpp b/clang/test/SemaCXX/varargs.cpp index bc2fe89a6ff8d..1e5920a8728d3 100644 --- a/clang/test/SemaCXX/varargs.cpp +++ b/clang/test/SemaCXX/varargs.cpp @@ -15,7 +15,7 @@ void g(register int i, ...) { // expected-warning 0-1{{deprecated}} // Don't crash when there is no last parameter. void no_params(...) { int a; - __builtin_va_start(ap, a); // expected-warning {{second argument to 'va_start' is not the last named parameter}} + __builtin_va_start(ap, a); // expected-warning {{second argument to 'va_start' is not the last non-variadic parameter}} } // Reject this. The __builtin_va_start would execute in Foo's non-variadic _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits