[PATCH] D127518: [Diagnostics] Fix inconsistent shift-overflow warnings in C++20
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 13 07:31:22 PDT 2022
aaron.ballman added a reviewer: clang-language-wg.
aaron.ballman added inline comments.
================
Comment at: clang/lib/Sema/SemaExpr.cpp:11422
llvm::APSInt Left = LHSResult.Val.getInt();
// If LHS does not have a signed type and non-negative value
----------------
... to early here instead, and it should also check `isSignedOverflowDefined()` (note: we should probably fix `SignedOverflowBehavior` in LangOptions.def to be set based on the C++ language mode instead of needing to check for C++20 specifically)
================
Comment at: clang/lib/Sema/SemaExpr.cpp:11425-11426
// then, the behavior is undefined before C++2a. Warn about it.
if (Left.isNegative() && !S.getLangOpts().isSignedOverflowDefined() &&
!S.getLangOpts().CPlusPlus20) {
S.DiagRuntimeBehavior(Loc, LHS.get(),
----------------
and then we can remove the check for signed overflow defined or C++20 here because we've already bailed out.
================
Comment at: clang/lib/Sema/SemaExpr.cpp:11456-11457
+ if (S.getLangOpts().CPlusPlus20)
+ return;
+
----------------
I think this should move up...
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D127518/new/
https://reviews.llvm.org/D127518
More information about the cfe-commits
mailing list