14#ifndef LLVM_TRANSFORMS_UTILS_CODEEXTRACTOR_H
15#define LLVM_TRANSFORMS_UTILS_CODEEXTRACTOR_H
24template <
typename PtrType>
class SmallPtrSetImpl;
28class BlockFrequencyInfo;
29class BranchProbabilityInfo;
57 void findSideEffectInfoForBlock(
BasicBlock &BB);
90 const bool AggregateArgs;
132 bool ArgsInZeroAddressSpace;
155 bool AllowAlloca =
false,
157 std::string Suffix =
"",
bool ArgsInZeroAddressSpace =
false);
205 bool CollectGlobalInputs =
false)
const;
242 struct LifetimeMarkerInfo {
243 bool SinkLifeStart =
false;
244 bool HoistLifeEnd =
false;
257 void computeExtractedFuncRetVals();
261 Type *getSwitchType();
263 void severSplitPHINodesOfEntry(
BasicBlock *&Header);
264 void severSplitPHINodesOfExits();
265 void splitReturnBlocks();
267 void moveCodeToFunction(
Function *newFunction);
269 void calculateNewCallTerminatorWeights(
276 void normalizeCFGForExtraction(
BasicBlock *&header);
302 std::vector<Value *> &Reloads);
306 void insertReplacerCall(
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.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Class to represent struct types.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
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.