24 OnlyNamed = onlyNamed;
29 incorporateType(
I->getType());
30 if (
I->hasInitializer())
31 incorporateValue(
I->getInitializer());
37 incorporateType(
I->getType());
38 if (
const Value *Aliasee =
I->getAliasee())
39 incorporateValue(Aliasee);
45 incorporateType(FI->getType());
47 if (FI->hasPrefixData())
48 incorporateValue(FI->getPrefixData());
52 AE = FI->arg_end(); AI != AE; ++AI)
58 E = BB->end(); II != E; ++II) {
68 if (!isa<Instruction>(OI))
69 incorporateValue(*OI);
73 for (
unsigned i = 0, e = MDForInst.
size(); i != e; ++i)
74 incorporateMDNode(MDForInst[i].second);
89 VisitedConstants.clear();
96 void TypeFinder::incorporateType(
Type *Ty) {
98 if (!VisitedTypes.insert(Ty).second)
107 if (
StructType *STy = dyn_cast<StructType>(Ty))
108 if (!OnlyNamed || STy->hasName())
109 StructTypes.push_back(STy);
115 if (VisitedTypes.insert(*I).second)
117 }
while (!TypeWorklist.
empty());
124 void TypeFinder::incorporateValue(
const Value *V) {
125 if (
const MDNode *M = dyn_cast<MDNode>(V))
126 return incorporateMDNode(M);
128 if (!isa<Constant>(V) || isa<GlobalValue>(V))
return;
131 if (!VisitedConstants.insert(V).second)
138 if (isa<Instruction>(V))
142 const User *U = cast<User>(V);
145 incorporateValue(*
I);
150 void TypeFinder::incorporateMDNode(
const MDNode *V) {
152 if (!VisitedConstants.insert(V).second)
158 incorporateValue(Op);
void push_back(const T &Elt)
The main container class for the LLVM Intermediate Representation.
unsigned getNumOperands() const
getNumOperands - Return number of MDNode operands.
named_metadata_iterator named_metadata_end()
MDNode - a tuple of other values.
subtype_reverse_iterator subtype_rend() const
void getAllMetadataOtherThanDebugLoc(SmallVectorImpl< std::pair< unsigned, MDNode * > > &MDs) const
Value * getOperand(unsigned i) const LLVM_READONLY
getOperand - Return specified operand.
T LLVM_ATTRIBUTE_UNUSED_RESULT pop_back_val()
global_iterator global_begin()
bool LLVM_ATTRIBUTE_UNUSED_RESULT empty() const
alias_iterator alias_end()
MDNode * getOperand(unsigned i) const
getOperand - Return specified operand.
global_iterator global_end()
void run(const Module &M, bool onlyNamed)
alias_iterator alias_begin()
LLVM Value Representation.
unsigned getNumOperands() const
getNumOperands - Return the number of NamedMDNode operands.
std::reverse_iterator< subtype_iterator > subtype_reverse_iterator
subtype_reverse_iterator subtype_rbegin() const
named_metadata_iterator named_metadata_begin()
const Use * const_op_iterator