[llvm] 977eeb0 - [WebAssembly] Fix some UB from ca541aa319cd
    Thomas Lively via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Tue Aug 24 19:44:12 PDT 2021
    
    
  
Author: Thomas Lively
Date: 2021-08-24T19:44:03-07:00
New Revision: 977eeb0c38712294bdeec790ba5ac9f5d8849539
URL: https://github.com/llvm/llvm-project/commit/977eeb0c38712294bdeec790ba5ac9f5d8849539
DIFF: https://github.com/llvm/llvm-project/commit/977eeb0c38712294bdeec790ba5ac9f5d8849539.diff
LOG: [WebAssembly] Fix some UB from ca541aa319cd
Added: 
    
Modified: 
    llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
Removed: 
    
################################################################################
diff  --git a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
index f0191c6f98df..75c7841fd655 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
@@ -2055,10 +2055,10 @@ SDValue WebAssemblyTargetLowering::LowerBUILD_VECTOR(SDValue Op,
         auto *Const = dyn_cast<ConstantSDNode>(Lane.getNode());
         int64_t Val = Const ? Const->getSExtValue() : 0;
         uint64_t LaneBits = 128 / Lanes;
-        assert((LaneT == MVT::i64 || Val >= -(1 << (LaneBits - 1))) &&
+        assert((LaneBits == 64 || Val >= -(1ll << (LaneBits - 1))) &&
                "Unexpected out of bounds negative value");
-        if (Const && LaneT != MVT::i64 && Val > (1 << (LaneBits - 1)) - 1) {
-          auto NewVal = ((uint64_t)Val % (1u << LaneBits)) - (1u << LaneBits);
+        if (Const && LaneBits != 64 && Val > (1ll << (LaneBits - 1)) - 1) {
+          auto NewVal = ((uint64_t)Val % (1ll << LaneBits)) - (1ll << LaneBits);
           ConstLanes.push_back(DAG.getConstant(NewVal, SDLoc(Lane), LaneT));
         } else {
           ConstLanes.push_back(Lane);
        
    
    
More information about the llvm-commits
mailing list