https://github.com/vitalybuka updated https://github.com/llvm/llvm-project/pull/113201
>From aa4280d627d0f2b2d57bf1f9bf574d2f6ab55d38 Mon Sep 17 00:00:00 2001 From: Vitaly Buka <vitalyb...@google.com> Date: Mon, 21 Oct 2024 11:01:36 -0700 Subject: [PATCH 1/2] comment Created using spr 1.3.4 --- .../Transforms/Instrumentation/MemorySanitizer.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp index 962d7cc5bca347..07fa9b729463e8 100644 --- a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp @@ -2719,11 +2719,12 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> { auto GetMinMaxUnsigned = [&](Value *V, Value *S) { if (IsSigned) { - // Map from signed range to unsigned range. Relation A vs B should be - // preserved if checked with `getUnsignedPredicate()`. - // Calcualting Amin, Amax, Bmin, Bmax also will not be affected, as they - // are created by effectively adding/substructing from A or B a value, - // derived from shadow, which can't result in overflow. + // Sign-flip to map from signed range to unsigned range. Relation A vs B + // should be preserved, if checked with `getUnsignedPredicate()`. + // Relationship between Amin, Amax, Bmin, Bmax also will not be + // affected, as they are created by effectively adding/substructing from + // A or B a value, derived from shadow, which can't result in overflow, + // before or after sign flip. APInt MinVal = APInt::getSignedMinValue(V->getType()->getScalarSizeInBits()); V = IRB.CreateXor(V, ConstantInt::get(V->getType(), MinVal)); >From afda5ceed69201fb24a46181462e2087aa768d55 Mon Sep 17 00:00:00 2001 From: Vitaly Buka <vitalyb...@google.com> Date: Mon, 21 Oct 2024 11:03:56 -0700 Subject: [PATCH 2/2] comment Created using spr 1.3.4 --- llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp index 07fa9b729463e8..391fb30d95e2ae 100644 --- a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp @@ -2723,7 +2723,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> { // should be preserved, if checked with `getUnsignedPredicate()`. // Relationship between Amin, Amax, Bmin, Bmax also will not be // affected, as they are created by effectively adding/substructing from - // A or B a value, derived from shadow, which can't result in overflow, + // A (or B) a value, derived from shadow, with no overflow, either // before or after sign flip. APInt MinVal = APInt::getSignedMinValue(V->getType()->getScalarSizeInBits()); _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits