Enumerate function-local metadata (and its types and operands) only during function-incorporation, global metadata continues to be enumerated during creation of ValueEnumerator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93338 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Bitcode/Writer/ValueEnumerator.h b/lib/Bitcode/Writer/ValueEnumerator.h
index c50fe9c..cf00e4c 100644
--- a/lib/Bitcode/Writer/ValueEnumerator.h
+++ b/lib/Bitcode/Writer/ValueEnumerator.h
@@ -105,6 +105,7 @@
const ValueList &getValues() const { return Values; }
const ValueList &getMDValues() const { return MDValues; }
+ ValueList getMDValues() { return MDValues; }
const TypeList &getTypes() const { return Types; }
const std::vector<const BasicBlock*> &getBasicBlocks() const {
return BasicBlocks;
@@ -127,11 +128,11 @@
private:
void OptimizeConstants(unsigned CstStart, unsigned CstEnd);
- void EnumerateMetadata(const MetadataBase *MD);
+ void EnumerateMetadata(const MetadataBase *MD, bool isGlobal);
void EnumerateNamedMDNode(const NamedMDNode *NMD);
- void EnumerateValue(const Value *V);
+ void EnumerateValue(const Value *V, bool isGlobal = true);
void EnumerateType(const Type *T);
- void EnumerateOperandType(const Value *V);
+ void EnumerateOperandType(const Value *V, bool isGlobal);
void EnumerateAttributes(const AttrListPtr &PAL);
void EnumerateTypeSymbolTable(const TypeSymbolTable &ST);