mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-28 03:25:23 +00:00
[CodeGen] Add a pass to fold null checks into nearby memory operations.
Summary: This change adds an "ImplicitNullChecks" target dependent pass. This pass folds null checks into memory operation using the FAULTING_LOAD pseudo-op introduced in previous patches. Depends on D10197 Depends on D10199 Depends on D10200 Reviewers: reames, rnk, pgavlin, JosephTremoulet, atrick Reviewed By: atrick Subscribers: ab, JosephTremoulet, llvm-commits Differential Revision: http://reviews.llvm.org/D10201 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239743 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -72,6 +72,10 @@ static cl::opt<bool> DisableCopyProp("disable-copyprop", cl::Hidden,
|
||||
cl::desc("Disable Copy Propagation pass"));
|
||||
static cl::opt<bool> DisablePartialLibcallInlining("disable-partial-libcall-inlining",
|
||||
cl::Hidden, cl::desc("Disable Partial Libcall Inlining"));
|
||||
static cl::opt<bool> EnableImplicitNullChecks(
|
||||
"enable-implicit-null-checks",
|
||||
cl::desc("Fold null checks into faulting memory operations"),
|
||||
cl::init(false));
|
||||
static cl::opt<bool> PrintLSR("print-lsr-output", cl::Hidden,
|
||||
cl::desc("Print LLVM IR produced by the loop-reduce pass"));
|
||||
static cl::opt<bool> PrintISelInput("print-isel-input", cl::Hidden,
|
||||
@@ -543,6 +547,9 @@ void TargetPassConfig::addMachinePasses() {
|
||||
// Run pre-sched2 passes.
|
||||
addPreSched2();
|
||||
|
||||
if (EnableImplicitNullChecks)
|
||||
addPass(&ImplicitNullChecksID);
|
||||
|
||||
// Second pass scheduler.
|
||||
if (getOptLevel() != CodeGenOpt::None) {
|
||||
if (MISchedPostRA)
|
||||
|
Reference in New Issue
Block a user