LLVM  3.7.0
Macros | Functions | Variables
InductiveRangeCheckElimination.cpp File Reference
#include "llvm/ADT/Optional.h"
#include "llvm/Analysis/BranchProbabilityInfo.h"
#include "llvm/Analysis/InstructionSimplify.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/Analysis/ValueTracking.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/IR/Verifier.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/SimplifyIndVar.h"
#include "llvm/Transforms/Utils/UnrollLoop.h"
#include <array>
Include dependency graph for InductiveRangeCheckElimination.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "irce"
 

Functions

 INITIALIZE_PASS (InductiveRangeCheckElimination,"irce","Inductive range check elimination", false, false) const char *InductiveRangeCheck
 
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, IRBuilder<> &B)
 

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< intMaxExitProbReciprocal ("irce-max-exit-prob-reciprocal", cl::Hidden, cl::init(10))
 

Macro Definition Documentation

#define DEBUG_TYPE   "irce"

Definition at line 86 of file InductiveRangeCheckElimination.cpp.

Function Documentation

static bool CanBeSMax ( ScalarEvolution SE,
const SCEV S 
)
static
static bool CanBeSMin ( ScalarEvolution SE,
const SCEV S 
)
static
INITIALIZE_PASS ( InductiveRangeCheckElimination  ,
"irce"  ,
"Inductive range check elimination ,
false  ,
false   
) const

Definition at line 227 of file InductiveRangeCheckElimination.cpp.

References llvm_unreachable.

static Optional<InductiveRangeCheck::Range> IntersectRange ( ScalarEvolution SE,
const Optional< InductiveRangeCheck::Range > &  R1,
const InductiveRangeCheck::Range &  R2,
IRBuilder<> &  B 
)
static

Variable Documentation

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