mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-23 14:25:07 +00:00
[fast-isel] Add X86FastIsel::FastLowerArguments to handle functions with 6 or
fewer scalar integer (i32 or i64) arguments. It completely eliminates the need for SDISel for trivial functions. Also, add the new llc -fast-isel-abort-args option, which is similar to -fast-isel-abort option, but for formal argument lowering. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176052 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -145,6 +145,10 @@ EnableFastISelVerbose("fast-isel-verbose", cl::Hidden,
|
||||
static cl::opt<bool>
|
||||
EnableFastISelAbort("fast-isel-abort", cl::Hidden,
|
||||
cl::desc("Enable abort calls when \"fast\" instruction fails"));
|
||||
static cl::opt<bool>
|
||||
EnableFastISelAbortArgs("fast-isel-abort-args", cl::Hidden,
|
||||
cl::desc("Enable abort calls when \"fast\" instruction fails to "
|
||||
"lower formal arguments"));
|
||||
|
||||
static cl::opt<bool>
|
||||
UseMBPI("use-mbpi",
|
||||
@@ -1048,6 +1052,12 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) {
|
||||
if (LLVMBB == &Fn.getEntryBlock()) {
|
||||
// Lower any arguments needed in this block if this is the entry block.
|
||||
if (!FastIS->LowerArguments()) {
|
||||
|
||||
if (EnableFastISelAbortArgs)
|
||||
// The "fast" selector couldn't lower these arguments. For the
|
||||
// purpose of debugging, just abort.
|
||||
llvm_unreachable("FastISel didn't lower all arguments");
|
||||
|
||||
// Call target indepedent SDISel argument lowering code if the target
|
||||
// specific routine is not successful.
|
||||
LowerArguments(LLVMBB);
|
||||
|
Reference in New Issue
Block a user