61#ifndef LLVM_TRANSFORMS_SCALAR_TLSVARIABLEHOIST_H
62#define LLVM_TRANSFORMS_SCALAR_TLSVARIABLEHOIST_H
118 void collectTLSCandidates(
Function &Fn);
125 bool tryReplaceTLSCandidates(
Function &Fn);
Returns the sub type a function will return at a given Idx Should correspond to the result type of an ExtractValue instruction executed with just that one unsigned Idx
This file implements a map that provides insertion order iteration.
This header defines various interfaces for pass management in LLVM.
This file defines the SmallVector class.
A container for analyses that lazily runs them and caches their results.
LLVM Basic Block Representation.
InstListType::iterator iterator
Instruction iterators...
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.
Represents a single loop in the control flow graph.
A set of analyses that are preserved following a run of a transformation pass.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
bool runImpl(Function &F, DominatorTree &DT, LoopInfo &LI)
Optimize expensive TLS variables in the given function.
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
@ BasicBlock
Various leaf nodes.
This is an optimization pass for GlobalISel generic memory operations.
A CRTP mix-in to automatically provide informational APIs needed for passes.
Keeps track of a TLS variable candidate and its users.
SmallVector< TLSUser, 8 > Users
void addUser(Instruction *Inst, unsigned Idx)
Add the user to the use list and update the cost.
Keeps track of the user of a TLS variable and the operand index where the variable is used.
TLSUser(Instruction *Inst, unsigned Idx)