From 4344a5d0d7b280f0b891e0e6a4413b059d9080b3 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 9 Sep 2008 23:05:00 +0000 Subject: [PATCH] Change -fast-isel-no-abort to -fast-isel-abort, which now defaults to being off by default. Also, add assertion checks to check that the various fast-isel-related command-line options are only used when -fast-isel itself is enabled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56029 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 070bd7084e6..acc2c050a08 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -64,9 +64,8 @@ EnableFastISelVerbose("fast-isel-verbose", cl::Hidden, cl::desc("Enable verbose messages in the experimental \"fast\" " "instruction selector")); static cl::opt -DisableFastISelAbort("fast-isel-no-abort", cl::Hidden, - cl::desc("Use the SelectionDAGISel when \"fast\" instruction " - "selection fails")); +EnableFastISelAbort("fast-isel-abort", cl::Hidden, + cl::desc("Enable abort calls when \"fast\" instruction fails")); static cl::opt SchedLiveInCopies("schedule-livein-copies", cl::desc("Schedule copies of livein registers"), @@ -287,6 +286,12 @@ void SelectionDAGISel::getAnalysisUsage(AnalysisUsage &AU) const { } bool SelectionDAGISel::runOnFunction(Function &Fn) { + // Do some sanity-checking on the command-line options. + assert((!EnableFastISelVerbose || EnableFastISel) && + "-fast-isel-verbose requires -fast-isel"); + assert((!EnableFastISelAbort || EnableFastISel) && + "-fast-isel-abort requires -fast-isel"); + // Get alias analysis for load/store combining. AA = &getAnalysis(); @@ -747,11 +752,11 @@ void SelectionDAGISel::SelectAllBasicBlocks(Function &Fn, MachineFunction &MF) { // feed PHI nodes in successor blocks. if (isa(BI)) if (!HandlePHINodesInSuccessorBlocksFast(LLVMBB, F)) { - if (EnableFastISelVerbose || !DisableFastISelAbort) { + if (EnableFastISelVerbose || EnableFastISelAbort) { cerr << "FastISel miss: "; BI->dump(); } - if (!DisableFastISelAbort) + if (EnableFastISelAbort) assert(0 && "FastISel didn't handle a PHI in a successor"); } @@ -778,11 +783,11 @@ void SelectionDAGISel::SelectAllBasicBlocks(Function &Fn, MachineFunction &MF) { // Otherwise, give up on FastISel for the rest of the block. // For now, be a little lenient about non-branch terminators. if (!isa(BI) || isa(BI)) { - if (EnableFastISelVerbose || !DisableFastISelAbort) { + if (EnableFastISelVerbose || EnableFastISelAbort) { cerr << "FastISel miss: "; BI->dump(); } - if (!DisableFastISelAbort) + if (EnableFastISelAbort) // The "fast" selector couldn't handle something and bailed. // For the purpose of debugging, just abort. assert(0 && "FastISel didn't select the entire block"); -- 2.34.1