[clang] Report wider source range for unsafe buffers warnings (PR #147363)
Thomas Sepez via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 7 11:50:14 PDT 2025
https://github.com/tsepez updated https://github.com/llvm/llvm-project/pull/147363
>From c389b056250871b802d34de6ba2cb0cf365b751a Mon Sep 17 00:00:00 2001
From: Tom Sepez <tsepez at chromium.org>
Date: Mon, 7 Jul 2025 17:59:53 +0000
Subject: [PATCH 1/2] Report wider source range for unsafe buffers warnings
---
clang/lib/Sema/AnalysisBasedWarnings.cpp | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/clang/lib/Sema/AnalysisBasedWarnings.cpp b/clang/lib/Sema/AnalysisBasedWarnings.cpp
index 7420ba2d461c6..4129a9537ba40 100644
--- a/clang/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/clang/lib/Sema/AnalysisBasedWarnings.cpp
@@ -2275,28 +2275,23 @@ class UnsafeBufferUsageReporter : public UnsafeBufferUsageHandler {
unsigned MsgParam = 0;
NamedDecl *D = nullptr;
if (const auto *ASE = dyn_cast<ArraySubscriptExpr>(Operation)) {
- Loc = ASE->getBase()->getExprLoc();
- Range = ASE->getBase()->getSourceRange();
+ Loc = ASE->getExprLoc();
+ Range = ASE->getSourceRange();
MsgParam = 2;
} else if (const auto *BO = dyn_cast<BinaryOperator>(Operation)) {
BinaryOperator::Opcode Op = BO->getOpcode();
if (Op == BO_Add || Op == BO_AddAssign || Op == BO_Sub ||
Op == BO_SubAssign) {
- if (BO->getRHS()->getType()->isIntegerType()) {
- Loc = BO->getLHS()->getExprLoc();
- Range = BO->getLHS()->getSourceRange();
- } else {
- Loc = BO->getRHS()->getExprLoc();
- Range = BO->getRHS()->getSourceRange();
- }
+ Loc = BO->getExprLoc();
+ Range = BO->getSourceRange();
MsgParam = 1;
}
} else if (const auto *UO = dyn_cast<UnaryOperator>(Operation)) {
UnaryOperator::Opcode Op = UO->getOpcode();
if (Op == UO_PreInc || Op == UO_PreDec || Op == UO_PostInc ||
Op == UO_PostDec) {
- Loc = UO->getSubExpr()->getExprLoc();
- Range = UO->getSubExpr()->getSourceRange();
+ Loc = UO->getExprLoc();
+ Range = UO->getSourceRange();
MsgParam = 1;
}
} else {
>From a4078d7719f6a32521f2c0ad2f777d6b3cffcda4 Mon Sep 17 00:00:00 2001
From: Tom Sepez <tsepez at chromium.org>
Date: Mon, 7 Jul 2025 18:49:49 +0000
Subject: [PATCH 2/2] next
---
...warn-unsafe-buffer-usage-source-ranges.cpp | 32 +++++++++----------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/clang/test/SemaCXX/warn-unsafe-buffer-usage-source-ranges.cpp b/clang/test/SemaCXX/warn-unsafe-buffer-usage-source-ranges.cpp
index fe3a952696557..b3036d21a2725 100644
--- a/clang/test/SemaCXX/warn-unsafe-buffer-usage-source-ranges.cpp
+++ b/clang/test/SemaCXX/warn-unsafe-buffer-usage-source-ranges.cpp
@@ -6,45 +6,45 @@ void foo(int i) {
int * ptr;
ptr++;
- // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:6}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:8}
ptr--;
- // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:6}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:8}
++ptr;
- // CHECK: {[[@LINE-1]]:5-[[@LINE-1]]:8}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:8}
--ptr;
- // CHECK: {[[@LINE-1]]:5-[[@LINE-1]]:8}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:8}
ptr + 1;
- // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:6}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:10}
2 + ptr;
- // CHECK: {[[@LINE-1]]:7-[[@LINE-1]]:10}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:10}
ptr + i;
- // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:6}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:10}
i + ptr;
- // CHECK: {[[@LINE-1]]:7-[[@LINE-1]]:10}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:10}
ptr - 3;
- // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:6}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:10}
ptr - i;
- // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:6}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:10}
ptr += 4;
- // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:6}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:11}
ptr += i;
- // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:6}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:11}
ptr -= 5;
- // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:6}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:11}
ptr -= i;
- // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:6}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:11}
ptr[5];
- // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:6}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:9}
5[ptr];
- // CHECK: {[[@LINE-1]]:5-[[@LINE-1]]:8}
+ // CHECK: {[[@LINE-1]]:3-[[@LINE-1]]:9}
}
More information about the cfe-commits
mailing list