LLVM  14.0.0git
Classes | Namespaces | Functions | Variables
ScalarEvolutionExpander.h File Reference
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
#include "llvm/Analysis/ScalarEvolutionNormalization.h"
#include "llvm/Analysis/TargetFolder.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/InstructionCost.h"
Include dependency graph for ScalarEvolutionExpander.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  llvm::SCEVOperand
 struct for holding enough information to help calculate the cost of the given SCEV when expanded into IR. More...
 
class  llvm::SCEVExpander
 This class uses information about analyze scalars to rewrite expressions in canonical form. More...
 
class  llvm::SCEVExpanderCleaner
 Helper to remove instructions inserted during SCEV expansion, unless they are marked as used. More...
 

Namespaces

 llvm
 This file implements support for optimizing divisions by a constant.
 

Functions

bool llvm::isSafeToExpand (const SCEV *S, ScalarEvolution &SE, bool CanonicalMode=true)
 Return true if the given expression is safe to expand in the sense that all materialized values are safe to speculate anywhere their operands are defined, and the expander is capable of expanding the expression. More...
 
bool llvm::isSafeToExpandAt (const SCEV *S, const Instruction *InsertionPoint, ScalarEvolution &SE)
 Return true if the given expression is safe to expand in the sense that all materialized values are defined and safe to speculate at the specified location and their operands are defined at this location. More...
 

Variables

cl::opt< unsigned > llvm::SCEVCheapExpansionBudget