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