diff --git a/llvm/lib/CodeGen/MIRCanonicalizerPass.cpp b/llvm/lib/CodeGen/MIRCanonicalizerPass.cpp --- 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 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 --- /dev/null +++ b/llvm/test/CodeGen/MIR/AArch64/empty-MF.mir @@ -0,0 +1,8 @@ +# RUN: llc -mtriple aarch64-- -run-pass mir-canonicalizer %s -o %t \ +# RUN: -verify-machineinstrs + +--- | + define void @foo() { + ret void + } +...