Index: llvm/trunk/lib/CodeGen/GlobalISel/InstructionSelect.cpp =================================================================== --- llvm/trunk/lib/CodeGen/GlobalISel/InstructionSelect.cpp +++ llvm/trunk/lib/CodeGen/GlobalISel/InstructionSelect.cpp @@ -164,7 +164,7 @@ 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; } Index: llvm/trunk/test/CodeGen/AArch64/GlobalISel/gisel-abort.ll =================================================================== --- llvm/trunk/test/CodeGen/AArch64/GlobalISel/gisel-abort.ll +++ llvm/trunk/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 +} +