Index: llvm/trunk/lib/CodeGen/MIRCanonicalizerPass.cpp =================================================================== --- llvm/trunk/lib/CodeGen/MIRCanonicalizerPass.cpp +++ llvm/trunk/lib/CodeGen/MIRCanonicalizerPass.cpp @@ -104,6 +104,8 @@ "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) { Index: llvm/trunk/test/CodeGen/MIR/AArch64/empty-MF.mir =================================================================== --- llvm/trunk/test/CodeGen/MIR/AArch64/empty-MF.mir +++ llvm/trunk/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: | +...