[GlobalISel] (fix) Use pointer type size for offset constant when lowering stores
authorDominik Montada <dominik.montada@gmail.com>
Thu, 30 Jan 2020 13:25:10 +0000 (08:25 -0500)
committerMatt Arsenault <arsenm2@gmail.com>
Thu, 30 Jan 2020 13:32:35 +0000 (08:32 -0500)
Commit 9965b12fd1b was supposed to change the offset constant when
lowering load/stores, but only introduced this change for loads. This
patch adds the same fix for stores.

llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp

index 5eb87c2..1bdd8eb 100644 (file)
@@ -2346,8 +2346,8 @@ LegalizerHelper::lower(MachineInstr &MI, unsigned TypeIdx, LLT Ty) {
 
     // Generate the PtrAdd and truncating stores.
     LLT PtrTy = MRI.getType(PtrReg);
-    auto OffsetCst =
-        MIRBuilder.buildConstant(LLT::scalar(64), LargeSplitSize / 8);
+    auto OffsetCst = MIRBuilder.buildConstant(
+            LLT::scalar(PtrTy.getSizeInBits()), LargeSplitSize / 8);
     Register PtrAddReg = MRI.createGenericVirtualRegister(PtrTy);
     auto SmallPtr =
         MIRBuilder.buildPtrAdd(PtrAddReg, PtrReg, OffsetCst.getReg(0));