From c99e99c2e003f3d9980837289bdf5b5112eec47c Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Tue, 28 May 2019 13:08:31 +0000 Subject: [PATCH] MIR: Fix printer crashing on dead CSR frame indexes llvm-svn: 361819 --- lib/CodeGen/MIRPrinter.cpp | 3 ++ test/CodeGen/AMDGPU/mir-print-dead-csr-fi.mir | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 test/CodeGen/AMDGPU/mir-print-dead-csr-fi.mir 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 + +...