LLVM  4.0.0
Macros | Functions | Variables
InductiveRangeCheckElimination.cpp File Reference
#include "llvm/ADT/Optional.h"
#include "llvm/Analysis/BranchProbabilityInfo.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/LoopPass.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Analysis/ScalarEvolutionExpander.h"
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/Pass.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/Cloning.h"
#include "llvm/Transforms/Utils/LoopUtils.h"
#include "llvm/Transforms/Utils/LoopSimplify.h"
Include dependency graph for InductiveRangeCheckElimination.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "irce"
 

Functions

 INITIALIZE_PASS_BEGIN (InductiveRangeCheckElimination,"irce","Inductive range check elimination", false, false) INITIALIZE_PASS_END(InductiveRangeCheckElimination
 
static void DisableAllLoopOptsOnLoop (Loop &L)
 
static bool CanBeSMax (ScalarEvolution &SE, const SCEV *S)
 
static bool CanBeSMin (ScalarEvolution &SE, const SCEV *S)
 
static Optional
< InductiveRangeCheck::Range > 
IntersectRange (ScalarEvolution &SE, const Optional< InductiveRangeCheck::Range > &R1, const InductiveRangeCheck::Range &R2)
 

Variables

static cl::opt< unsignedLoopSizeCutoff ("irce-loop-size-cutoff", cl::Hidden, cl::init(64))
 
static cl::opt< boolPrintChangedLoops ("irce-print-changed-loops", cl::Hidden, cl::init(false))
 
static cl::opt< boolPrintRangeChecks ("irce-print-range-checks", cl::Hidden, cl::init(false))
 
static cl::opt< int > MaxExitProbReciprocal ("irce-max-exit-prob-reciprocal", cl::Hidden, cl::init(10))
 
static cl::opt< boolSkipProfitabilityChecks ("irce-skip-profitability-checks", cl::Hidden, cl::init(false))
 
static const char * ClonedLoopTag = "irce.loop.clone"
 
 irce
 
Inductive range check elimination
 
Inductive range check false
 

Macro Definition Documentation

#define DEBUG_TYPE   "irce"

Definition at line 84 of file InductiveRangeCheckElimination.cpp.

Function Documentation

static bool CanBeSMax ( ScalarEvolution SE,
const SCEV S 
)
static
static bool CanBeSMin ( ScalarEvolution SE,
const SCEV S 
)
static
static void DisableAllLoopOptsOnLoop ( Loop L)
static
INITIALIZE_PASS_BEGIN ( InductiveRangeCheckElimination  ,
"irce"  ,
"Inductive range check elimination ,
false  ,
false   
)
static Optional<InductiveRangeCheck::Range> IntersectRange ( ScalarEvolution SE,
const Optional< InductiveRangeCheck::Range > &  R1,
const InductiveRangeCheck::Range &  R2 
)
static

Variable Documentation

const char* ClonedLoopTag = "irce.loop.clone"
static

Definition at line 82 of file InductiveRangeCheckElimination.cpp.

Inductive range check elimination

Definition at line 222 of file InductiveRangeCheckElimination.cpp.

Inductive range check false

Definition at line 222 of file InductiveRangeCheckElimination.cpp.

irce

Definition at line 222 of file InductiveRangeCheckElimination.cpp.

cl::opt<unsigned> LoopSizeCutoff("irce-loop-size-cutoff", cl::Hidden, cl::init(64))
static
cl::opt<int> MaxExitProbReciprocal("irce-max-exit-prob-reciprocal", cl::Hidden, cl::init(10))
static
cl::opt<bool> PrintChangedLoops("irce-print-changed-loops", cl::Hidden, cl::init(false))
static
cl::opt<bool> PrintRangeChecks("irce-print-range-checks", cl::Hidden, cl::init(false))
static
cl::opt<bool> SkipProfitabilityChecks("irce-skip-profitability-checks", cl::Hidden, cl::init(false))
static