Go to the documentation of this file.
13 #ifndef LLVM_IR_TYPEFINDER_H
14 #define LLVM_IR_TYPEFINDER_H
39 std::vector<StructType*> StructTypes;
40 bool OnlyNamed =
false;
48 using iterator = std::vector<StructType*>::iterator;
57 bool empty()
const {
return StructTypes.empty(); }
58 size_t size()
const {
return StructTypes.size(); }
68 void incorporateType(
Type *Ty);
74 void incorporateValue(
const Value *V);
78 void incorporateMDNode(
const MDNode *V);
86 #endif // LLVM_IR_TYPEFINDER_H
This is an optimization pass for GlobalISel generic memory operations.
const_iterator end() const
We currently emits eax Perhaps this is what we really should generate is Is imull three or four cycles eax eax The current instruction priority is based on pattern complexity The former is more complex because it folds a load so the latter will not be emitted Perhaps we should use AddedComplexity to give LEA32r a higher priority We should always try to match LEA first since the LEA matching code does some estimate to determine whether the match is profitable if we care more about code then imull is better It s two bytes shorter than movl leal On a Pentium M
The instances of the Type class are immutable: once they are created, they are never changed.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
StructType *& operator[](unsigned Idx)
std::vector< StructType * >::const_iterator const_iterator
A Module instance is used to store all the information related to an LLVM module.
DenseSet< const MDNode * > & getVisitedMetadata()
Class to represent struct types.
void run(const Module &M, bool onlyNamed)
TypeFinder - Walk over a module, identifying all of the types that are used by the module.
std::vector< StructType * >::iterator iterator
Machine Check Debug Module
iterator erase(iterator I, iterator E)
LLVM Value Representation.
const_iterator begin() const