From: Matt Arsenault Date: Tue, 28 May 2019 13:08:31 +0000 (+0000) Subject: MIR: Fix printer crashing on dead CSR frame indexes X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ec764aad9f5561e62d725c4c845b40616c9e9278;p=llvm MIR: Fix printer crashing on dead CSR frame indexes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361819 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/MIRPrinter.cpp b/lib/CodeGen/MIRPrinter.cpp index 86e3f53608c..1d95187d597 100644 --- a/lib/CodeGen/MIRPrinter.cpp +++ b/lib/CodeGen/MIRPrinter.cpp @@ -403,6 +403,9 @@ void MIRPrinter::convertStackObjects(yaml::MachineFunction &YMF, } for (const auto &CSInfo : MFI.getCalleeSavedInfo()) { + if (!CSInfo.isSpilledToReg() && MFI.isDeadObjectIndex(CSInfo.getFrameIdx())) + continue; + yaml::StringValue Reg; printRegMIR(CSInfo.getReg(), Reg, TRI); if (!CSInfo.isSpilledToReg()) { diff --git a/test/CodeGen/AMDGPU/mir-print-dead-csr-fi.mir b/test/CodeGen/AMDGPU/mir-print-dead-csr-fi.mir new file mode 100644 index 00000000000..cccf2c113eb --- /dev/null +++ b/test/CodeGen/AMDGPU/mir-print-dead-csr-fi.mir @@ -0,0 +1,28 @@ +# RUN: llc -mtriple=amdgcn-amd-amdhsa -run-pass=prologepilog -o - %s | FileCheck %s + +# Make sure the MIR printer doesn't crash when there are dead frame indexes. The +# CSR SGPR frame indexes are inserted, but deleted. + +# CHECK-LABEL: name: csr_sgpr +# CHECK: fixedStack: [] +# CHECK: stack: [] +--- +name: csr_sgpr +tracksRegLiveness: true +liveins: + - { reg: '$sgpr30_sgpr31' } +frameInfo: + maxAlignment: 4 +machineFunctionInfo: + scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3' + scratchWaveOffsetReg: '$sgpr4' + frameOffsetReg: '$sgpr5' + stackPtrOffsetReg: '$sgpr32' +body: | + bb.0: + liveins: $sgpr30_sgpr31 + + INLINEASM &"; clobber s42", 1, 12, implicit-def dead early-clobber $sgpr42 + S_SETPC_B64_return $sgpr30_sgpr31 + +...