[PATCH] D157383: [clang][Diagnostics] Provide source range to integer-overflow warnings
Takuya Shimizu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Aug 19 06:06:03 PDT 2023
This revision was automatically updated to reflect the committed changes.
Closed by commit rG985a72b6b3e7: [clang][Diagnostics] Provide source range to integer-overflow warnings (authored by hazohelet).
Changed prior to commit:
https://reviews.llvm.org/D157383?vs=548149&id=551746#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D157383/new/
https://reviews.llvm.org/D157383
Files:
clang/lib/AST/ExprConstant.cpp
clang/lib/AST/Interp/Interp.h
clang/test/Misc/constexpr-source-ranges.cpp
Index: clang/test/Misc/constexpr-source-ranges.cpp
===================================================================
--- clang/test/Misc/constexpr-source-ranges.cpp
+++ clang/test/Misc/constexpr-source-ranges.cpp
@@ -34,3 +34,10 @@
}
static_assert(ints(1, div(true, false), 2, div(false, true)) == 1, "");
// CHECK: constexpr-source-ranges.cpp:35:23:{35:23-35:39}
+
+namespace overflow {
+// CHECK: :{[[@LINE+1]]:9-[[@LINE+1]]:29}:
+int x = -1 + __INT_MAX__ + 2 + 3;
+// CHECK: :{[[@LINE+1]]:9-[[@LINE+1]]:19}:
+int a = -(1 << 31) + 1;
+}
Index: clang/lib/AST/Interp/Interp.h
===================================================================
--- clang/lib/AST/Interp/Interp.h
+++ clang/lib/AST/Interp/Interp.h
@@ -271,7 +271,8 @@
SmallString<32> Trunc;
Value.trunc(Result.bitWidth()).toString(Trunc, 10);
auto Loc = E->getExprLoc();
- S.report(Loc, diag::warn_integer_constant_overflow) << Trunc << Type;
+ S.report(Loc, diag::warn_integer_constant_overflow)
+ << Trunc << Type << E->getSourceRange();
return true;
} else {
S.CCEDiag(E, diag::note_constexpr_overflow) << Value << Type;
@@ -478,7 +479,8 @@
SmallString<32> Trunc;
NegatedValue.trunc(Result.bitWidth()).toString(Trunc, 10);
auto Loc = E->getExprLoc();
- S.report(Loc, diag::warn_integer_constant_overflow) << Trunc << Type;
+ S.report(Loc, diag::warn_integer_constant_overflow)
+ << Trunc << Type << E->getSourceRange();
return true;
}
@@ -531,7 +533,8 @@
SmallString<32> Trunc;
APResult.trunc(Result.bitWidth()).toString(Trunc, 10);
auto Loc = E->getExprLoc();
- S.report(Loc, diag::warn_integer_constant_overflow) << Trunc << Type;
+ S.report(Loc, diag::warn_integer_constant_overflow)
+ << Trunc << Type << E->getSourceRange();
return true;
}
Index: clang/lib/AST/ExprConstant.cpp
===================================================================
--- clang/lib/AST/ExprConstant.cpp
+++ clang/lib/AST/ExprConstant.cpp
@@ -2798,7 +2798,7 @@
if (Info.checkingForUndefinedBehavior())
Info.Ctx.getDiagnostics().Report(E->getExprLoc(),
diag::warn_integer_constant_overflow)
- << toString(Result, 10) << E->getType();
+ << toString(Result, 10) << E->getType() << E->getSourceRange();
return HandleOverflow(Info, E, Value, E->getType());
}
return true;
@@ -13643,7 +13643,7 @@
if (Info.checkingForUndefinedBehavior())
Info.Ctx.getDiagnostics().Report(E->getExprLoc(),
diag::warn_integer_constant_overflow)
- << toString(Value, 10) << E->getType();
+ << toString(Value, 10) << E->getType() << E->getSourceRange();
if (!HandleOverflow(Info, E, -Value.extend(Value.getBitWidth() + 1),
E->getType()))
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D157383.551746.patch
Type: text/x-patch
Size: 2889 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230819/158358f3/attachment.bin>
More information about the cfe-commits
mailing list