[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
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 @@
"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 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: |
+...