14#ifndef LLVM_TRANSFORMS_UTILS_CODEEXTRACTOR_H
15#define LLVM_TRANSFORMS_UTILS_CODEEXTRACTOR_H
24template <
typename PtrType>
class SmallPtrSetImpl;
28class BlockFrequencyInfo;
29class BranchProbabilityInfo;
56 void findSideEffectInfoForBlock(
BasicBlock &BB);
89 const bool AggregateArgs;
104 unsigned NumExitBlocks = std::numeric_limits<unsigned>::max();
118 bool ArgsInZeroAddressSpace;
141 bool AllowAlloca =
false,
143 std::string Suffix =
"",
bool ArgsInZeroAddressSpace =
false);
227 struct LifetimeMarkerInfo {
228 bool SinkLifeStart =
false;
229 bool HoistLifeEnd =
false;
240 void severSplitPHINodesOfEntry(
BasicBlock *&Header);
242 void splitReturnBlocks();
250 void moveCodeToFunction(
Function *newFunction);
252 void calculateNewCallTerminatorWeights(
This file defines the DenseMap class.
Machine Check Debug Module
This file implements a set that has insertion order iteration characteristics.
an instruction to allocate memory on the stack
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
A cache of @llvm.assume calls within a function.
LLVM Basic Block Representation.
BlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to estimate IR basic block frequen...
Analysis providing branch probability information.
This class represents a function call, abstracting a target machine's calling convention.
Implements a dense probed hash-table based set.
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.
A Module instance is used to store all the information related to an LLVM module.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
The instances of the Type class are immutable: once they are created, they are never changed.
LLVM Value Representation.
@ BasicBlock
Various leaf nodes.
This is an optimization pass for GlobalISel generic memory operations.