[clang] 684c26c - [analyzer] Remove redundant "returned to caller" suffix for compound literal in StackAddressEscape
via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 23 01:46:40 PDT 2024
Author: z1nke
Date: 2024-10-23T10:46:36+02:00
New Revision: 684c26c89b8994fc31d1c4be0cf70d6cc6f2b7ca
URL: https://github.com/llvm/llvm-project/commit/684c26c89b8994fc31d1c4be0cf70d6cc6f2b7ca
DIFF: https://github.com/llvm/llvm-project/commit/684c26c89b8994fc31d1c4be0cf70d6cc6f2b7ca.diff
LOG: [analyzer] Remove redundant "returned to caller" suffix for compound literal in StackAddressEscape
This patch simplifies the diagnostic message in the core.StackAddrEscape
for stack memory associated with compound literals by removing the
redundant "returned to caller" suffix.
Example: https://godbolt.org/z/KxM67vr7c
```c
// clang --analyze -Xanalyzer -analyzer-checker=core.StackAddressEscape
void* compound_literal() {
return &(unsigned short){((unsigned short)0x22EF)};
}
```
warning: Address of stack memory associated with a compound literal
declared on line 2 **returned to caller returned to caller**
[core.StackAddressEscape]
Added:
Modified:
clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
clang/test/Analysis/stack-addr-ps.c
Removed:
################################################################################
diff --git a/clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
index a76639bb86b208..f4de3b500499c4 100644
--- a/clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
@@ -78,7 +78,7 @@ SourceRange StackAddrEscapeChecker::genName(raw_ostream &os, const MemRegion *R,
const CompoundLiteralExpr *CL = CR->getLiteralExpr();
os << "stack memory associated with a compound literal "
"declared on line "
- << SM.getExpansionLineNumber(CL->getBeginLoc()) << " returned to caller";
+ << SM.getExpansionLineNumber(CL->getBeginLoc());
range = CL->getSourceRange();
} else if (const auto *AR = dyn_cast<AllocaRegion>(R)) {
const Expr *ARE = AR->getExpr();
diff --git a/clang/test/Analysis/stack-addr-ps.c b/clang/test/Analysis/stack-addr-ps.c
index 7d7294455f1dbe..1adcb8c48d035d 100644
--- a/clang/test/Analysis/stack-addr-ps.c
+++ b/clang/test/Analysis/stack-addr-ps.c
@@ -20,17 +20,21 @@ int* f3(int x, int *y) {
void* compound_literal(int x, int y) {
if (x)
- return &(unsigned short){((unsigned short)0x22EF)}; // expected-warning{{Address of stack memory}} expected-warning{{address of stack memory}}
+ return &(unsigned short){((unsigned short)0x22EF)};
+ // expected-warning-re at -1{{Address of stack memory associated with a compound literal declared on line {{[0-9]+}} returned to caller [core.StackAddressEscape]}}
+ // expected-warning at -2{{address of stack memory}}
int* array[] = {};
struct s { int z; double y; int w; };
if (y)
- return &((struct s){ 2, 0.4, 5 * 8 }); // expected-warning{{Address of stack memory}} expected-warning{{address of stack memory}}
-
+ return &((struct s){ 2, 0.4, 5 * 8 });
+ // expected-warning-re at -1{{Address of stack memory associated with a compound literal declared on line {{[0-9]+}} returned to caller [core.StackAddressEscape]}}
+ // expected-warning at -2{{address of stack memory}}
void* p = &((struct s){ 42, 0.4, x ? 42 : 0 });
- return p; // expected-warning{{Address of stack memory}}
+ return p;
+ // expected-warning-re at -1{{Address of stack memory associated with a compound literal declared on line {{[0-9]+}} returned to caller [core.StackAddressEscape]}}
}
void* alloca_test(void) {
More information about the cfe-commits
mailing list