|
LLVM
3.7.0
|
#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>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< unsigned > | LoopSizeCutoff ("irce-loop-size-cutoff", cl::Hidden, cl::init(64)) |
| 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< int > | MaxExitProbReciprocal ("irce-max-exit-prob-reciprocal", cl::Hidden, cl::init(10)) |
| #define DEBUG_TYPE "irce" |
Definition at line 86 of file InductiveRangeCheckElimination.cpp.
|
static |
Definition at line 630 of file InductiveRangeCheckElimination.cpp.
References llvm::ConstantRange::contains(), getBitWidth(), llvm::APInt::getSignedMaxValue(), llvm::ScalarEvolution::getSignedRange(), llvm::SCEV::getType(), and llvm::ScalarEvolution::getUnsignedRange().
|
static |
Definition at line 637 of file InductiveRangeCheckElimination.cpp.
References llvm::ConstantRange::contains(), getBitWidth(), llvm::APInt::getSignedMinValue(), llvm::ScalarEvolution::getSignedRange(), llvm::SCEV::getType(), and llvm::ScalarEvolution::getUnsignedRange().
| INITIALIZE_PASS | ( | InductiveRangeCheckElimination | , |
| "irce" | , | ||
| "Inductive range check elimination" | , | ||
| false | , | ||
| false | |||
| ) | const |
Definition at line 227 of file InductiveRangeCheckElimination.cpp.
References llvm_unreachable.
|
static |
Definition at line 1369 of file InductiveRangeCheckElimination.cpp.
References llvm::ScalarEvolution::getSMaxExpr(), llvm::ScalarEvolution::getSMinExpr(), llvm::Optional< T >::getValue(), llvm::Optional< T >::hasValue(), and llvm::None.
|
static |
1.8.6