From eb3384582fab38cd6d8d6c3999b79e25ad09cfb5 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Fri, 18 Nov 2016 14:14:35 +0000 Subject: [PATCH] GlobalISel: Fix unconditional fallback with global isel abort is disabled Reviewers: t.p.northover, ab, qcolombet Subscribers: mehdi_amini, vkalintiris, wdng, dberris, llvm-commits, rovka Differential Revision: https://reviews.llvm.org/D26765 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@287344 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/GlobalISel/InstructionSelect.cpp | 2 +- test/CodeGen/AArch64/GlobalISel/gisel-abort.ll | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 test/CodeGen/AArch64/GlobalISel/gisel-abort.ll diff --git a/lib/CodeGen/GlobalISel/InstructionSelect.cpp b/lib/CodeGen/GlobalISel/InstructionSelect.cpp index 72e4a23bb40..1d205cd6c9c 100644 --- a/lib/CodeGen/GlobalISel/InstructionSelect.cpp +++ b/lib/CodeGen/GlobalISel/InstructionSelect.cpp @@ -164,7 +164,7 @@ bool InstructionSelect::runOnMachineFunction(MachineFunction &MF) { MRI.getVRegToType().clear(); - if (!TPC.isGlobalISelAbortEnabled() && (Failed || MF.size() == NumBlocks)) { + if (!TPC.isGlobalISelAbortEnabled() && (Failed || MF.size() != NumBlocks)) { MF.getProperties().set(MachineFunctionProperties::Property::FailedISel); return false; } diff --git a/test/CodeGen/AArch64/GlobalISel/gisel-abort.ll b/test/CodeGen/AArch64/GlobalISel/gisel-abort.ll new file mode 100644 index 00000000000..76eafdd5af5 --- /dev/null +++ b/test/CodeGen/AArch64/GlobalISel/gisel-abort.ll @@ -0,0 +1,8 @@ +; RUN: llc -march aarch64 -global-isel -global-isel-abort=2 -verify-machineinstrs %s -o - 2>&1 | FileCheck %s + +; CHECK-NOT: fallback +; CHECK: empty +define void @empty() { + ret void +} + -- 2.40.0