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 <tse...@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 <tse...@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}
 }

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to