Go to the documentation of this file.
61 #ifndef LLVM_TRANSFORMS_SCALAR_TLSVARIABLEHOIST_H
62 #define LLVM_TRANSFORMS_SCALAR_TLSVARIABLEHOIST_H
118 void collectTLSCandidates(
Function &Fn);
125 bool tryReplaceTLSCandidates(
Function &Fn);
131 #endif // LLVM_TRANSFORMS_SCALAR_TLSVARIABLEHOIST_H
A set of analyses that are preserved following a run of a transformation pass.
This is an optimization pass for GlobalISel generic memory operations.
TLSUser(Instruction *Inst, unsigned Idx)
SmallVector< TLSUser, 8 > Users
InstListType::iterator iterator
Instruction iterators...
A CRTP mix-in to automatically provide informational APIs needed for passes.
void addUser(Instruction *Inst, unsigned Idx)
Add the user to the use list and update the cost.
Represents a single loop in the control flow graph.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
LLVM Basic Block Representation.
@ BasicBlock
Various leaf nodes.
Keeps track of the user of a TLS variable and the operand index where the variable is used.
Keeps track of a TLS variable candidate and its users.
bool runImpl(Function &F, DominatorTree &DT, LoopInfo &LI)
Optimize expensive TLS variables in the given function.
A container for analyses that lazily runs them and caches their results.
Common register allocation spilling lr str ldr sxth r3 ldr mla r4 can lr mov lr str ldr sxth r3 mla r4 and then merge mul and lr str ldr sxth r3 mla r4 It also increase the likelihood the store may become dead bb27 Successors according to LLVM BB