From: Matt Arsenault Date: Sat, 30 May 2020 14:54:43 +0000 (-0400) Subject: GlobalISel: Fail expansion of G_DYN_STACKALLOC for StackGrowsUp X-Git-Tag: llvmorg-12-init~4205 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3866e0a563ebfd622a0041d107f8d402097db0c1;p=platform%2Fupstream%2Fllvm.git GlobalISel: Fail expansion of G_DYN_STACKALLOC for StackGrowsUp --- diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp index 189c645..6d39b1f 100644 --- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp +++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp @@ -5029,16 +5029,19 @@ LegalizerHelper::lowerShuffleVector(MachineInstr &MI) { LegalizerHelper::LegalizeResult LegalizerHelper::lowerDynStackAlloc(MachineInstr &MI) { + const auto &MF = *MI.getMF(); + const auto &TFI = *MF.getSubtarget().getFrameLowering(); + if (TFI.getStackGrowthDirection() == TargetFrameLowering::StackGrowsUp) + return UnableToLegalize; + Register Dst = MI.getOperand(0).getReg(); Register AllocSize = MI.getOperand(1).getReg(); Align Alignment = assumeAligned(MI.getOperand(2).getImm()); - const auto &MF = *MI.getMF(); - const auto &TLI = *MF.getSubtarget().getTargetLowering(); - LLT PtrTy = MRI.getType(Dst); LLT IntPtrTy = LLT::scalar(PtrTy.getSizeInBits()); + const auto &TLI = *MF.getSubtarget().getTargetLowering(); Register SPReg = TLI.getStackPointerRegisterToSaveRestore(); auto SPTmp = MIRBuilder.buildCopy(PtrTy, SPReg); SPTmp = MIRBuilder.buildCast(IntPtrTy, SPTmp);