From: Puyan Lotfi Date: Thu, 30 May 2019 21:37:25 +0000 (+0000) Subject: [MIR-Canon] Fixing case where MachineFunction is empty. X-Git-Tag: android-x86-9.0-r1~2694 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=6a890853301570f69c567fb2626b492edeb1eaf0;p=android-x86%2Fexternal-llvm.git [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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@362158 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/MIRCanonicalizerPass.cpp b/lib/CodeGen/MIRCanonicalizerPass.cpp index e8a6e409fb5..650240e60fe 100644 --- a/lib/CodeGen/MIRCanonicalizerPass.cpp +++ b/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/test/CodeGen/MIR/AArch64/empty-MF.mir b/test/CodeGen/MIR/AArch64/empty-MF.mir new file mode 100644 index 00000000000..40b1bff06ff --- /dev/null +++ b/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: | +...