[clang] [clang][analyzer] Improved message of CallAndMessageChecker at calls with uninitialized argument (PR #211038)
Balázs Kéri via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 31 08:59:07 PDT 2026
https://github.com/balazske updated https://github.com/llvm/llvm-project/pull/211038
>From 1bd480d6d17c956635a4ddb844e2b57c0bb4104b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bal=C3=A1zs=20K=C3=A9ri?= <balazs.keri at ericsson.com>
Date: Tue, 21 Jul 2026 18:17:29 +0200
Subject: [PATCH 1/2] [clang][analyzer] Improved message of
CallAndMessageChecker at calls with uninitialized argument
---
.../Checkers/CallAndMessageChecker.cpp | 24 +++++++--
clang/test/Analysis/PR40625.cpp | 2 +-
...ll-and-message-argpointeeinitializedness.c | 8 +--
...-and-message-argpointeeinitializedness.cpp | 8 +--
clang/test/Analysis/call-and-message.c | 6 +--
clang/test/Analysis/exercise-ps.c | 2 +-
clang/test/Analysis/uninit-const.c | 52 +++++++++----------
clang/test/Analysis/uninit-const.cpp | 12 ++---
8 files changed, 65 insertions(+), 49 deletions(-)
diff --git a/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
index 10efda33821c0..92ded1ff8e639 100644
--- a/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
@@ -321,12 +321,27 @@ bool CallAndMessageChecker::uninitRefOrPointer(CheckerContext &C, SVal V,
const SVal PointeeV = State->getSVal(SValMemRegion, PointeeT);
const Expr *ArgEx = Call.getArgExpr(ArgumentNumber);
+ auto DescribeArgument = [ParamT, PointeeT,
+ &Call](bool ArgIsStruct) -> std::string {
+ if (PointeeT.isConstQualified())
+ return llvm::formatv(
+ "This argument is const{0} and {1} input data of the function",
+ ParamT->isPointerType() ? " pointer" : "",
+ ArgIsStruct ? "may contain" : "is likely");
+ else
+ return llvm::formatv(
+ "Function '{0}' expects {1}this argument to be initialized",
+ cast<NamedDecl>(Call.getDecl())->getNameAsString(),
+ ParamT->isPointerType() ? "memory pointed to by " : "");
+ };
+
if (PointeeV.isUndef()) {
if (ExplodedNode *N = C.generateErrorNode()) {
std::string Msg = llvm::formatv(
- "{0}{1} function call argument is {2} uninitialized value",
+ "{0}{1} function call argument {2} an uninitialized value; {3}",
ArgumentNumber + 1, llvm::getOrdinalSuffix(ArgumentNumber + 1),
- ParamT->isPointerType() ? "a pointer to" : "an");
+ ParamT->isPointerType() ? "points to" : "is",
+ DescribeArgument(/*ArgIsStruct=*/false));
auto R = std::make_unique<PathSensitiveBugReport>(BT, Msg, N);
R->addRange(Call.getArgSourceRange(ArgumentNumber));
if (ArgEx)
@@ -346,9 +361,10 @@ bool CallAndMessageChecker::uninitRefOrPointer(CheckerContext &C, SVal V,
if (F.Find(D->getRegion())) {
if (ExplodedNode *N = C.generateErrorNode()) {
std::string Msg = llvm::formatv(
- "{0}{1} function call argument {2} an uninitialized value{3}",
+ "{0}{1} function call argument {2} an uninitialized value{3}; {4}",
(ArgumentNumber + 1), llvm::getOrdinalSuffix(ArgumentNumber + 1),
- ParamT->isPointerType() ? "points to" : "references", F.FieldChain);
+ ParamT->isPointerType() ? "points to" : "is", F.FieldChain,
+ DescribeArgument(/*ArgIsStruct=*/true));
auto R = std::make_unique<PathSensitiveBugReport>(BT, Msg, N);
R->addRange(Call.getArgSourceRange(ArgumentNumber));
if (ArgEx)
diff --git a/clang/test/Analysis/PR40625.cpp b/clang/test/Analysis/PR40625.cpp
index 5ebe2122945e6..d4be2e7390357 100644
--- a/clang/test/Analysis/PR40625.cpp
+++ b/clang/test/Analysis/PR40625.cpp
@@ -5,7 +5,7 @@
void f(const int *end);
void g(const int (&arrr)[10]) {
- f(arrr); // expected-warning{{1st function call argument is a pointer to uninitialized value}}
+ f(arrr); // expected-warning{{1st function call argument points to an uninitialized value;}}
}
void h() {
diff --git a/clang/test/Analysis/call-and-message-argpointeeinitializedness.c b/clang/test/Analysis/call-and-message-argpointeeinitializedness.c
index 2fc4b9f9f523e..5da7641e3b6d1 100644
--- a/clang/test/Analysis/call-and-message-argpointeeinitializedness.c
+++ b/clang/test/Analysis/call-and-message-argpointeeinitializedness.c
@@ -30,7 +30,7 @@ extern time_t mktime(struct tm *timeptr);
void uninit_mbrlen(const char *mbs) {
mbstate_t state;
- mbrlen(mbs, 1, &state); // expected-warning{{3rd function call argument points to an uninitialized value}}
+ mbrlen(mbs, 1, &state); // expected-warning{{3rd function call argument points to an uninitialized value; Function 'mbrlen' expects memory pointed to by this argument to be initialized}}
}
void init_mbrlen(const char *mbs) {
@@ -42,16 +42,16 @@ void init_mbrlen(const char *mbs) {
void uninit_wcsnrtombs(const wchar_t *src) {
char dst[10];
mbstate_t state;
- wcsnrtombs(dst, &src, 1, 2, &state); // expected-warning{{5th function call argument points to an uninitialized value}}
+ wcsnrtombs(dst, &src, 1, 2, &state); // expected-warning{{5th function call argument points to an uninitialized value; Function 'wcsnrtombs' expects memory pointed to by this argument to be initialized}}
}
void uninit_mbrtoc16(const char *s) {
char16_t pc16[10];
mbstate_t state;
- mbrtoc16(pc16, s, 1, &state); // expected-warning{{4th function call argument points to an uninitialized value}}
+ mbrtoc16(pc16, s, 1, &state); // expected-warning{{4th function call argument points to an uninitialized value; Function 'mbrtoc16' expects memory pointed to by this argument to be initialized}}
}
void uninit_mktime() {
struct tm time;
- mktime(&time); // expected-warning{{1st function call argument points to an uninitialized value}}
+ mktime(&time); // expected-warning{{1st function call argument points to an uninitialized value; Function 'mktime' expects memory pointed to by this argument to be initialized}}
}
diff --git a/clang/test/Analysis/call-and-message-argpointeeinitializedness.cpp b/clang/test/Analysis/call-and-message-argpointeeinitializedness.cpp
index bf84f8d88fe95..d0d4801031243 100644
--- a/clang/test/Analysis/call-and-message-argpointeeinitializedness.cpp
+++ b/clang/test/Analysis/call-and-message-argpointeeinitializedness.cpp
@@ -31,8 +31,8 @@ void uninit_val_p() {
void uninit_val_r() {
S s;
- doStuffR(s); // initializedness-partial-warning{{1st function call argument references an uninitialized value (e.g., field: 'a')}} \
- // initializedness-complete-warning{{1st function call argument references an uninitialized value}}
+ doStuffR(s); // initializedness-partial-warning{{1st function call argument is an uninitialized value (e.g., field: 'a'); This argument is const and may contain input data of the function}} \
+ // initializedness-complete-warning{{1st function call argument is an uninitialized value; This argument is const and may contain input data of the function}}
}
S *uninit_new() {
@@ -88,11 +88,11 @@ void uninit_static() {
void uninit_val_partial_1() {
S s;
s.a = 1;
- doStuffR(s); // initializedness-partial-warning{{1st function call argument references an uninitialized value (e.g., via the field chain: 'b.c')}}
+ doStuffR(s); // initializedness-partial-warning{{1st function call argument is an uninitialized value (e.g., via the field chain: 'b.c'); This argument is const and may contain input data of the function}}
}
void uninit_val_partial_2() {
S s;
s.b.c = 1;
- doStuffR(s); // initializedness-partial-warning{{1st function call argument references an uninitialized value (e.g., field: 'a')}}
+ doStuffR(s); // initializedness-partial-warning{{1st function call argument is an uninitialized value (e.g., field: 'a'); This argument is const and may contain input data of the function}}
}
diff --git a/clang/test/Analysis/call-and-message.c b/clang/test/Analysis/call-and-message.c
index 5f34635123426..0b81c86254f4b 100644
--- a/clang/test/Analysis/call-and-message.c
+++ b/clang/test/Analysis/call-and-message.c
@@ -21,7 +21,7 @@ void doStuff_pointerToConstInt(const int *u){};
void pointee_uninit(void) {
int i;
int *p = &i;
- doStuff_pointerToConstInt(p); // expected-warning{{1st function call argument is a pointer to uninitialized value [core.CallAndMessage]}}
+ doStuff_pointerToConstInt(p); // expected-warning{{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function [core.CallAndMessage]}}
}
typedef struct S {
@@ -33,12 +33,12 @@ void doStuff_pointerToConstStruct(const S *s){};
void pointee_uninit_struct(void) {
S s;
S *p = &s;
- doStuff_pointerToConstStruct(p); // expected-warning{{1st function call argument points to an uninitialized value (e.g., field: 'a') [core.CallAndMessage]}}
+ doStuff_pointerToConstStruct(p); // expected-warning{{1st function call argument points to an uninitialized value (e.g., field: 'a'); This argument is const pointer and may contain input data of the function [core.CallAndMessage]}}
}
void pointee_uninit_struct_1(void) {
S s;
s.a = 2;
- doStuff_pointerToConstStruct(&s); // expected-warning{{1st function call argument points to an uninitialized value (e.g., field: 'b') [core.CallAndMessage]}}
+ doStuff_pointerToConstStruct(&s); // expected-warning{{1st function call argument points to an uninitialized value (e.g., field: 'b'); This argument is const pointer and may contain input data of the function [core.CallAndMessage]}}
}
void pointee_uninit_struct_2(void) {
S s = {};
diff --git a/clang/test/Analysis/exercise-ps.c b/clang/test/Analysis/exercise-ps.c
index 21d97a364e190..4af5d04a224e7 100644
--- a/clang/test/Analysis/exercise-ps.c
+++ b/clang/test/Analysis/exercise-ps.c
@@ -31,7 +31,7 @@ static void f2(void *buf) {
// what type of value do we expect.
void f3(void *dest) {
void *src = __builtin_alloca(5);
- memcpy(dest, src, 1); // expected-warning{{2nd function call argument is a pointer to uninitialized value}}
+ memcpy(dest, src, 1); // expected-warning{{2nd function call argument points to an uninitialized value; Function 'memcpy' expects memory pointed to by this argument to be initialized}}
}
// Reproduce crash from GH#94496. When array is used as subcript to another array, CSA cannot model it
diff --git a/clang/test/Analysis/uninit-const.c b/clang/test/Analysis/uninit-const.c
index f8c89644dd306..8a2c9be585c8c 100644
--- a/clang/test/Analysis/uninit-const.c
+++ b/clang/test/Analysis/uninit-const.c
@@ -30,16 +30,16 @@ void doStuff_variadic(const int *u, ...){};
void f_1(void) {
int t; // expected-note {{'t' declared without an initial value}}
int* tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
}
void f_1_1(void) {
int t; // expected-note {{'t' declared without an initial value}}
int *tp1 = &t; // expected-note {{'tp1' initialized here}}
int *tp2 = tp1; // expected-note {{'tp2' initialized to the value of 'tp1'}}
- doStuff_pointerToConstInt(tp2); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_pointerToConstInt(tp2); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
}
@@ -54,8 +54,8 @@ void f_2(void) {
// expected-note at -2{{Returning from 'f_2_sub'}}
// expected-note at -3{{'p' initialized here}}
int *tp = p; // expected-note {{'tp' initialized to the value of 'p'}}
- doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
}
int z;
@@ -71,14 +71,14 @@ void f_4(void) {
void f_5(void) {
int ta[5]; // expected-note {{'ta' declared without an initial value}}
int *tp = ta; // expected-note {{'tp' initialized here}}
- doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
}
void f_5_1(void) {
int ta[5]; // expected-note {{'ta' declared without an initial value}}
- doStuff_pointerToConstInt(ta); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_pointerToConstInt(ta); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
}
void f_6(void) {
@@ -108,20 +108,20 @@ void f_8(void) {
void f_9(void) {
int a[6]; // expected-note {{'a' declared without an initial value}}
int const *ptau = a; // expected-note {{'ptau' initialized here}}
- doStuff_arrayOfConstInt(ptau); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_arrayOfConstInt(ptau); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
}
void f_10(void) {
int a[6]; // expected-note {{'a' declared without an initial value}}
- doStuff_arrayOfConstInt(a); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_arrayOfConstInt(a); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
}
void f_11(void) {
int t[10]; //expected-note {{'t' declared without an initial value}}
- doStuff_constStaticSizedArray(t); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_constStaticSizedArray(t); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
}
void f_12(void) {
@@ -161,8 +161,8 @@ int f_malloc_1(void) {
ptr = (int *)malloc(sizeof(int)); // expected-note {{Value assigned to 'ptr'}}
- doStuff_pointerToConstInt(ptr); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_pointerToConstInt(ptr); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
free(ptr);
return 0;
}
@@ -183,16 +183,16 @@ void f_variadic_unp_unv(void) {
int t; // expected-note {{'t' declared without an initial value}}
int v;
int* tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_variadic(tp,v); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_variadic(tp,v); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
}
// uninit pointer, init val
void f_variadic_unp_inv(void) {
int t; // expected-note {{'t' declared without an initial value}}
int v = 3;
int* tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_variadic(tp,v); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_variadic(tp,v); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
}
// init pointer, uninit val
@@ -227,8 +227,8 @@ void f_variadic_unp_inp(void) {
int u=3;
int *vp = &u ;
int *tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_variadic(tp,vp); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_variadic(tp,vp); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
}
//init pointer, uninit pointer
@@ -246,6 +246,6 @@ void f_variadic_unp_unp(void) {
int u;
int *vp = &u ;
int *tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_variadic(tp,vp); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_variadic(tp,vp); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
}
diff --git a/clang/test/Analysis/uninit-const.cpp b/clang/test/Analysis/uninit-const.cpp
index 2ad833b3613fb..d559487d9cba8 100644
--- a/clang/test/Analysis/uninit-const.cpp
+++ b/clang/test/Analysis/uninit-const.cpp
@@ -38,8 +38,8 @@ int f9(void) {
// a pointer to an uninitialized value is stored.
ptr = new int; // expected-note{{Storing uninitialized value}}
// expected-note at -1{{Value assigned to 'ptr'}}
- doStuff_uninit(ptr); // expected-warning{{1st function call argument is a pointer to uninitialized value [core.CallAndMessage]}}
- // expected-note at -1{{1st function call argument is a pointer to uninitialized value}}
+ doStuff_uninit(ptr); // expected-warning{{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function [core.CallAndMessage]}}
+ // expected-note at -1{{1st function call argument points to an uninitialized value;}}
delete ptr;
return 0;
}
@@ -111,8 +111,8 @@ void f6(void) {
void f5(void) {
int t; // expected-note {{'t' declared without an initial value}}
int* tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_uninit(tp); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_uninit(tp); // expected-warning {{1st function call argument points to an uninitialized value;}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value;}}
}
@@ -139,6 +139,6 @@ void f1(void) {
void f_uninit(void) {
int x; // expected-note {{'x' declared without an initial value}}
- doStuff_uninit(&x); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note at -1 {{1st function call argument is a pointer to uninitialized value}}
+ doStuff_uninit(&x); // expected-warning {{1st function call argument points to an uninitialized value;}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value;}}
}
>From a02422bc2f4fe6313230838b31d9521a7d4441da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bal=C3=A1zs=20K=C3=A9ri?= <balazs.keri at ericsson.com>
Date: Fri, 31 Jul 2026 17:58:34 +0200
Subject: [PATCH 2/2] changed second message part to lower case
---
.../Checkers/CallAndMessageChecker.cpp | 4 +-
...ll-and-message-argpointeeinitializedness.c | 8 +--
...-and-message-argpointeeinitializedness.cpp | 8 +--
clang/test/Analysis/call-and-message.c | 6 +--
clang/test/Analysis/exercise-ps.c | 2 +-
clang/test/Analysis/uninit-const.c | 52 +++++++++----------
clang/test/Analysis/uninit-const.cpp | 2 +-
7 files changed, 41 insertions(+), 41 deletions(-)
diff --git a/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
index 92ded1ff8e639..3997da0ba5dc5 100644
--- a/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
@@ -325,12 +325,12 @@ bool CallAndMessageChecker::uninitRefOrPointer(CheckerContext &C, SVal V,
&Call](bool ArgIsStruct) -> std::string {
if (PointeeT.isConstQualified())
return llvm::formatv(
- "This argument is const{0} and {1} input data of the function",
+ "this argument is const{0} and {1} input data of the function",
ParamT->isPointerType() ? " pointer" : "",
ArgIsStruct ? "may contain" : "is likely");
else
return llvm::formatv(
- "Function '{0}' expects {1}this argument to be initialized",
+ "function '{0}' expects {1}this argument to be initialized",
cast<NamedDecl>(Call.getDecl())->getNameAsString(),
ParamT->isPointerType() ? "memory pointed to by " : "");
};
diff --git a/clang/test/Analysis/call-and-message-argpointeeinitializedness.c b/clang/test/Analysis/call-and-message-argpointeeinitializedness.c
index 5da7641e3b6d1..bee3aaf8e2b69 100644
--- a/clang/test/Analysis/call-and-message-argpointeeinitializedness.c
+++ b/clang/test/Analysis/call-and-message-argpointeeinitializedness.c
@@ -30,7 +30,7 @@ extern time_t mktime(struct tm *timeptr);
void uninit_mbrlen(const char *mbs) {
mbstate_t state;
- mbrlen(mbs, 1, &state); // expected-warning{{3rd function call argument points to an uninitialized value; Function 'mbrlen' expects memory pointed to by this argument to be initialized}}
+ mbrlen(mbs, 1, &state); // expected-warning{{3rd function call argument points to an uninitialized value; function 'mbrlen' expects memory pointed to by this argument to be initialized}}
}
void init_mbrlen(const char *mbs) {
@@ -42,16 +42,16 @@ void init_mbrlen(const char *mbs) {
void uninit_wcsnrtombs(const wchar_t *src) {
char dst[10];
mbstate_t state;
- wcsnrtombs(dst, &src, 1, 2, &state); // expected-warning{{5th function call argument points to an uninitialized value; Function 'wcsnrtombs' expects memory pointed to by this argument to be initialized}}
+ wcsnrtombs(dst, &src, 1, 2, &state); // expected-warning{{5th function call argument points to an uninitialized value; function 'wcsnrtombs' expects memory pointed to by this argument to be initialized}}
}
void uninit_mbrtoc16(const char *s) {
char16_t pc16[10];
mbstate_t state;
- mbrtoc16(pc16, s, 1, &state); // expected-warning{{4th function call argument points to an uninitialized value; Function 'mbrtoc16' expects memory pointed to by this argument to be initialized}}
+ mbrtoc16(pc16, s, 1, &state); // expected-warning{{4th function call argument points to an uninitialized value; function 'mbrtoc16' expects memory pointed to by this argument to be initialized}}
}
void uninit_mktime() {
struct tm time;
- mktime(&time); // expected-warning{{1st function call argument points to an uninitialized value; Function 'mktime' expects memory pointed to by this argument to be initialized}}
+ mktime(&time); // expected-warning{{1st function call argument points to an uninitialized value; function 'mktime' expects memory pointed to by this argument to be initialized}}
}
diff --git a/clang/test/Analysis/call-and-message-argpointeeinitializedness.cpp b/clang/test/Analysis/call-and-message-argpointeeinitializedness.cpp
index d0d4801031243..388f505f3155e 100644
--- a/clang/test/Analysis/call-and-message-argpointeeinitializedness.cpp
+++ b/clang/test/Analysis/call-and-message-argpointeeinitializedness.cpp
@@ -31,8 +31,8 @@ void uninit_val_p() {
void uninit_val_r() {
S s;
- doStuffR(s); // initializedness-partial-warning{{1st function call argument is an uninitialized value (e.g., field: 'a'); This argument is const and may contain input data of the function}} \
- // initializedness-complete-warning{{1st function call argument is an uninitialized value; This argument is const and may contain input data of the function}}
+ doStuffR(s); // initializedness-partial-warning{{1st function call argument is an uninitialized value (e.g., field: 'a'); this argument is const and may contain input data of the function}} \
+ // initializedness-complete-warning{{1st function call argument is an uninitialized value; this argument is const and may contain input data of the function}}
}
S *uninit_new() {
@@ -88,11 +88,11 @@ void uninit_static() {
void uninit_val_partial_1() {
S s;
s.a = 1;
- doStuffR(s); // initializedness-partial-warning{{1st function call argument is an uninitialized value (e.g., via the field chain: 'b.c'); This argument is const and may contain input data of the function}}
+ doStuffR(s); // initializedness-partial-warning{{1st function call argument is an uninitialized value (e.g., via the field chain: 'b.c'); this argument is const and may contain input data of the function}}
}
void uninit_val_partial_2() {
S s;
s.b.c = 1;
- doStuffR(s); // initializedness-partial-warning{{1st function call argument is an uninitialized value (e.g., field: 'a'); This argument is const and may contain input data of the function}}
+ doStuffR(s); // initializedness-partial-warning{{1st function call argument is an uninitialized value (e.g., field: 'a'); this argument is const and may contain input data of the function}}
}
diff --git a/clang/test/Analysis/call-and-message.c b/clang/test/Analysis/call-and-message.c
index 0b81c86254f4b..f1ba4848b75ea 100644
--- a/clang/test/Analysis/call-and-message.c
+++ b/clang/test/Analysis/call-and-message.c
@@ -21,7 +21,7 @@ void doStuff_pointerToConstInt(const int *u){};
void pointee_uninit(void) {
int i;
int *p = &i;
- doStuff_pointerToConstInt(p); // expected-warning{{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function [core.CallAndMessage]}}
+ doStuff_pointerToConstInt(p); // expected-warning{{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function [core.CallAndMessage]}}
}
typedef struct S {
@@ -33,12 +33,12 @@ void doStuff_pointerToConstStruct(const S *s){};
void pointee_uninit_struct(void) {
S s;
S *p = &s;
- doStuff_pointerToConstStruct(p); // expected-warning{{1st function call argument points to an uninitialized value (e.g., field: 'a'); This argument is const pointer and may contain input data of the function [core.CallAndMessage]}}
+ doStuff_pointerToConstStruct(p); // expected-warning{{1st function call argument points to an uninitialized value (e.g., field: 'a'); this argument is const pointer and may contain input data of the function [core.CallAndMessage]}}
}
void pointee_uninit_struct_1(void) {
S s;
s.a = 2;
- doStuff_pointerToConstStruct(&s); // expected-warning{{1st function call argument points to an uninitialized value (e.g., field: 'b'); This argument is const pointer and may contain input data of the function [core.CallAndMessage]}}
+ doStuff_pointerToConstStruct(&s); // expected-warning{{1st function call argument points to an uninitialized value (e.g., field: 'b'); this argument is const pointer and may contain input data of the function [core.CallAndMessage]}}
}
void pointee_uninit_struct_2(void) {
S s = {};
diff --git a/clang/test/Analysis/exercise-ps.c b/clang/test/Analysis/exercise-ps.c
index 4af5d04a224e7..a2cb8c5295e0f 100644
--- a/clang/test/Analysis/exercise-ps.c
+++ b/clang/test/Analysis/exercise-ps.c
@@ -31,7 +31,7 @@ static void f2(void *buf) {
// what type of value do we expect.
void f3(void *dest) {
void *src = __builtin_alloca(5);
- memcpy(dest, src, 1); // expected-warning{{2nd function call argument points to an uninitialized value; Function 'memcpy' expects memory pointed to by this argument to be initialized}}
+ memcpy(dest, src, 1); // expected-warning{{2nd function call argument points to an uninitialized value; function 'memcpy' expects memory pointed to by this argument to be initialized}}
}
// Reproduce crash from GH#94496. When array is used as subcript to another array, CSA cannot model it
diff --git a/clang/test/Analysis/uninit-const.c b/clang/test/Analysis/uninit-const.c
index 8a2c9be585c8c..beb7a3ff762f4 100644
--- a/clang/test/Analysis/uninit-const.c
+++ b/clang/test/Analysis/uninit-const.c
@@ -30,16 +30,16 @@ void doStuff_variadic(const int *u, ...){};
void f_1(void) {
int t; // expected-note {{'t' declared without an initial value}}
int* tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
}
void f_1_1(void) {
int t; // expected-note {{'t' declared without an initial value}}
int *tp1 = &t; // expected-note {{'tp1' initialized here}}
int *tp2 = tp1; // expected-note {{'tp2' initialized to the value of 'tp1'}}
- doStuff_pointerToConstInt(tp2); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_pointerToConstInt(tp2); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
}
@@ -54,8 +54,8 @@ void f_2(void) {
// expected-note at -2{{Returning from 'f_2_sub'}}
// expected-note at -3{{'p' initialized here}}
int *tp = p; // expected-note {{'tp' initialized to the value of 'p'}}
- doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
}
int z;
@@ -71,14 +71,14 @@ void f_4(void) {
void f_5(void) {
int ta[5]; // expected-note {{'ta' declared without an initial value}}
int *tp = ta; // expected-note {{'tp' initialized here}}
- doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
}
void f_5_1(void) {
int ta[5]; // expected-note {{'ta' declared without an initial value}}
- doStuff_pointerToConstInt(ta); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_pointerToConstInt(ta); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
}
void f_6(void) {
@@ -108,20 +108,20 @@ void f_8(void) {
void f_9(void) {
int a[6]; // expected-note {{'a' declared without an initial value}}
int const *ptau = a; // expected-note {{'ptau' initialized here}}
- doStuff_arrayOfConstInt(ptau); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_arrayOfConstInt(ptau); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
}
void f_10(void) {
int a[6]; // expected-note {{'a' declared without an initial value}}
- doStuff_arrayOfConstInt(a); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_arrayOfConstInt(a); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
}
void f_11(void) {
int t[10]; //expected-note {{'t' declared without an initial value}}
- doStuff_constStaticSizedArray(t); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_constStaticSizedArray(t); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
}
void f_12(void) {
@@ -161,8 +161,8 @@ int f_malloc_1(void) {
ptr = (int *)malloc(sizeof(int)); // expected-note {{Value assigned to 'ptr'}}
- doStuff_pointerToConstInt(ptr); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_pointerToConstInt(ptr); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
free(ptr);
return 0;
}
@@ -183,16 +183,16 @@ void f_variadic_unp_unv(void) {
int t; // expected-note {{'t' declared without an initial value}}
int v;
int* tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_variadic(tp,v); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_variadic(tp,v); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
}
// uninit pointer, init val
void f_variadic_unp_inv(void) {
int t; // expected-note {{'t' declared without an initial value}}
int v = 3;
int* tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_variadic(tp,v); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_variadic(tp,v); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
}
// init pointer, uninit val
@@ -227,8 +227,8 @@ void f_variadic_unp_inp(void) {
int u=3;
int *vp = &u ;
int *tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_variadic(tp,vp); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_variadic(tp,vp); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
}
//init pointer, uninit pointer
@@ -246,6 +246,6 @@ void f_variadic_unp_unp(void) {
int u;
int *vp = &u ;
int *tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_variadic(tp,vp); // expected-warning {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
- // expected-note at -1 {{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function}}
+ doStuff_variadic(tp,vp); // expected-warning {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
+ // expected-note at -1 {{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function}}
}
diff --git a/clang/test/Analysis/uninit-const.cpp b/clang/test/Analysis/uninit-const.cpp
index d559487d9cba8..417e1f16b707d 100644
--- a/clang/test/Analysis/uninit-const.cpp
+++ b/clang/test/Analysis/uninit-const.cpp
@@ -38,7 +38,7 @@ int f9(void) {
// a pointer to an uninitialized value is stored.
ptr = new int; // expected-note{{Storing uninitialized value}}
// expected-note at -1{{Value assigned to 'ptr'}}
- doStuff_uninit(ptr); // expected-warning{{1st function call argument points to an uninitialized value; This argument is const pointer and is likely input data of the function [core.CallAndMessage]}}
+ doStuff_uninit(ptr); // expected-warning{{1st function call argument points to an uninitialized value; this argument is const pointer and is likely input data of the function [core.CallAndMessage]}}
// expected-note at -1{{1st function call argument points to an uninitialized value;}}
delete ptr;
return 0;
More information about the cfe-commits
mailing list