diff options
-rw-r--r-- | llvm/lib/CodeGen/MIRCanonicalizerPass.cpp | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/MIR/AArch64/empty-MF.mir | 11 |
2 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MIRCanonicalizerPass.cpp b/llvm/lib/CodeGen/MIRCanonicalizerPass.cpp index e8a6e409fb5..650240e60fe 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<MachineBasicBlock *> GetRPOList(MachineFunction &MF) { + if (MF.empty()) + return {}; ReversePostOrderTraversal<MachineBasicBlock *> RPOT(&*MF.begin()); std::vector<MachineBasicBlock *> 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 00000000000..40b1bff06ff --- /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: | +... |