فهرست منبع

BitcodeWriter: Simplify tracking of function-local metadata, NFC

We don't really need a separate vector here; instead, point at a range
inside the main MDs array.  This matches how r264551 references the
ranges of strings and non-strings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264552 91177308-0d34-0410-b5e6-96231b3b80d8
Duncan P. N. Exon Smith 9 سال پیش
والد
کامیت
e693a56e9b
3فایلهای تغییر یافته به همراه5 افزوده شده و 12 حذف شده
  1. 3 5
      lib/Bitcode/Writer/BitcodeWriter.cpp
  2. 0 4
      lib/Bitcode/Writer/ValueEnumerator.cpp
  3. 2 3
      lib/Bitcode/Writer/ValueEnumerator.h

+ 3 - 5
lib/Bitcode/Writer/BitcodeWriter.cpp

@@ -1431,15 +1431,13 @@ static void WriteFunctionLocalMetadata(const Function &F,
                                        BitstreamWriter &Stream) {
   bool StartedMetadataBlock = false;
   SmallVector<uint64_t, 64> Record;
-  const SmallVectorImpl<const LocalAsMetadata *> &MDs =
-      VE.getFunctionLocalMDs();
-  for (unsigned i = 0, e = MDs.size(); i != e; ++i) {
-    assert(MDs[i] && "Expected valid function-local metadata");
+  for (const Metadata *MD : VE.getFunctionMDs()) {
+    auto *Local = cast<LocalAsMetadata>(MD);
     if (!StartedMetadataBlock) {
       Stream.EnterSubblock(bitc::METADATA_BLOCK_ID, 3);
       StartedMetadataBlock = true;
     }
-    WriteValueAsMetadata(MDs[i], VE, Stream, Record);
+    WriteValueAsMetadata(Local, VE, Stream, Record);
   }
 
   if (StartedMetadataBlock)

+ 0 - 4
lib/Bitcode/Writer/ValueEnumerator.cpp

@@ -554,9 +554,6 @@ void ValueEnumerator::EnumerateFunctionLocalMetadata(
   MetadataID = MDs.size();
 
   EnumerateValue(Local->getValue());
-
-  // Also, collect all function-local metadata for easy access.
-  FunctionLocalMDs.push_back(Local);
 }
 
 void ValueEnumerator::organizeMetadata() {
@@ -778,7 +775,6 @@ void ValueEnumerator::purgeFunction() {
   Values.resize(NumModuleValues);
   MDs.resize(NumModuleMDs);
   BasicBlocks.clear();
-  FunctionLocalMDs.clear();
 }
 
 static void IncorporateFunctionInfoGlobalBBIDs(const Function *F,

+ 2 - 3
lib/Bitcode/Writer/ValueEnumerator.h

@@ -63,7 +63,6 @@ private:
   ComdatSetType Comdats;
 
   std::vector<const Metadata *> MDs;
-  SmallVector<const LocalAsMetadata *, 8> FunctionLocalMDs;
   typedef DenseMap<const Metadata *, unsigned> MetadataMapType;
   MetadataMapType MetadataMap;
   unsigned NumMDStrings = 0;
@@ -161,8 +160,8 @@ public:
   ArrayRef<const Metadata *> getNonMDStrings() const {
     return makeArrayRef(MDs).slice(NumMDStrings);
   }
-  const SmallVectorImpl<const LocalAsMetadata *> &getFunctionLocalMDs() const {
-    return FunctionLocalMDs;
+  ArrayRef<const Metadata *> getFunctionMDs() const {
+    return makeArrayRef(MDs).slice(NumModuleMDs);
   }
 
   const TypeList &getTypes() const { return Types; }