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;
105 unsigned NumExitBlocks = std::numeric_limits<unsigned>::max();
119 bool ArgsInZeroAddressSpace;
142 bool AllowAlloca =
false,
144 std::string Suffix =
"",
bool ArgsInZeroAddressSpace =
false);
154 std::string Suffix =
"");
238 struct LifetimeMarkerInfo {
239 bool SinkLifeStart =
false;
240 bool HoistLifeEnd =
false;
251 void severSplitPHINodesOfEntry(
BasicBlock *&Header);
253 void splitReturnBlocks();
261 void moveCodeToFunction(
Function *newFunction);
263 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.
Represents a single loop in the control flow graph.
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.