From 6a890853301570f69c567fb2626b492edeb1eaf0 Mon Sep 17 00:00:00 2001 From: Puyan Lotfi Date: Thu, 30 May 2019 21:37:25 +0000 Subject: [PATCH] [MIR-Canon] Fixing case where MachineFunction is empty. In cases where the machine function is empty: bail on the RPO traversal. Differential Revision: https://reviews.llvm.org/D62617 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@362158 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/MIRCanonicalizerPass.cpp | 2 ++ test/CodeGen/MIR/AArch64/empty-MF.mir | 11 +++++++++++ 2 files changed, 13 insertions(+) create mode 100644 test/CodeGen/MIR/AArch64/empty-MF.mir diff --git a/lib/CodeGen/MIRCanonicalizerPass.cpp b/lib/CodeGen/MIRCanonicalizerPass.cpp index e8a6e409fb5..650240e60fe 100644 --- a/lib/CodeGen/MIRCanonicalizerPass.cpp +++ b/lib/CodeGen/MIRCanonicalizerPass.cpp @@ -104,6 +104,8 @@ INITIALIZE_PASS_END(MIRCanonicalizer, "mir-canonicalizer", "Rename Register Operands Canonically", false, false) static std::vector GetRPOList(MachineFunction &MF) { + if (MF.empty()) + return {}; ReversePostOrderTraversal RPOT(&*MF.begin()); std::vector RPOList; for (auto MBB : RPOT) { diff --git a/test/CodeGen/MIR/AArch64/empty-MF.mir b/test/CodeGen/MIR/AArch64/empty-MF.mir new file mode 100644 index 00000000000..40b1bff06ff --- /dev/null +++ b/test/CodeGen/MIR/AArch64/empty-MF.mir @@ -0,0 +1,11 @@ +# RUN: llc -mtriple aarch64-- -run-pass mir-canonicalizer %s -o - | FileCheck %s +# CHECK: ... +# CHECK-NEXT: --- +# CHECK-NEXT: name: foo +# CHECK: body: | +# CHECK-EMPTY: +# CHECK-NEXT: ... +--- +name: foo +body: | +... -- 2.11.0