22 #ifndef LLVM_ANALYSIS_DEMANDED_BITS_H 23 #define LLVM_ANALYSIS_DEMANDED_BITS_H 34 class AssumptionCache;
44 F(F), AC(AC), DT(DT) {}
66 void performAnalysis();
67 void determineLiveOperandBits(
const Instruction *UserI,
68 const Value *Val,
unsigned OperandNo,
76 bool Analyzed =
false;
99 void releaseMemory()
override;
136 #endif // LLVM_ANALYSIS_DEMANDED_BITS_H
This class represents lattice values for constants.
A Module instance is used to store all the information related to an LLVM module. ...
bool isInstructionDead(Instruction *I)
Return true if, during analysis, I could not be reached.
DemandedBitsPrinterPass(raw_ostream &OS)
A cache of @llvm.assume calls within a function.
A Use represents the edge between a Value definition and its users.
An analysis that produces DemandedBits for a function.
This file implements a class to represent arbitrary precision integral constant values and operations...
A CRTP mix-in to automatically provide informational APIs needed for passes.
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree...
static bool runOnFunction(Function &F, bool PostInlining)
Printer pass for DemandedBits.
A set of analyses that are preserved following a run of a transformation pass.
A CRTP mix-in that provides informational APIs needed for analysis passes.
Represent the analysis usage information of a pass.
FunctionPass class - This class is used to implement most global optimizations.
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements...
DemandedBits & getDemandedBits()
DemandedBits(Function &F, AssumptionCache &AC, DominatorTree &DT)
APInt getDemandedBits(Instruction *I)
Return the bits demanded from instruction I.
Class for arbitrary precision integers.
bool isUseDead(Use *U)
Return whether this use is dead by means of not having any demanded bits.
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream...
A container for analyses that lazily runs them and caches their results.
This header defines various interfaces for pass management in LLVM.
FunctionPass * createDemandedBitsWrapperPass()
Create a demanded bits analysis pass.
A special type used by analysis passes to provide an address that identifies that particular analysis...
void print(raw_ostream &OS)