From daaecf98c9ac41d2ad1da5bbf53303c2167501b5 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 llvm-svn: 362158 --- llvm/lib/CodeGen/MIRCanonicalizerPass.cpp | 2 ++ llvm/test/CodeGen/MIR/AArch64/empty-MF.mir | 11 +++++++++++ 2 files changed, 13 insertions(+) create mode 100644 llvm/test/CodeGen/MIR/AArch64/empty-MF.mir diff --git a/llvm/lib/CodeGen/MIRCanonicalizerPass.cpp b/llvm/lib/CodeGen/MIRCanonicalizerPass.cpp index e8a6e40..650240e 100644 --- a/llvm/lib/CodeGen/MIRCanonicalizerPass.cpp +++ b/llvm/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/llvm/test/CodeGen/MIR/AArch64/empty-MF.mir b/llvm/test/CodeGen/MIR/AArch64/empty-MF.mir new file mode 100644 index 0000000..40b1bff --- /dev/null +++ b/llvm/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.7.4