Sort handler names to ensure deterministic behavior.
authorDevang Patel <dpatel@apple.com>
Thu, 22 Oct 2009 17:40:37 +0000 (17:40 +0000)
committerDevang Patel <dpatel@apple.com>
Thu, 22 Oct 2009 17:40:37 +0000 (17:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84878 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Metadata.h
lib/VMCore/Metadata.cpp

index a9c242c5085977fa7dcd2f6918538f266883d78d..93207b18cc7b86e54add3330e35dcb1cc9720a02 100644 (file)
@@ -285,9 +285,9 @@ public:
   /// the same metadata to In2.
   void copyMD(Instruction *In1, Instruction *In2);
 
-  /// getHandlerNames - Get handler names. This is used by bitcode
-  /// writer.
-  void getHandlerNames(SmallVectorImpl<std::pair<unsigned, StringRef> >&N) const;
+  /// getHandlerNames - Populate client supplied smallvector using custome
+  /// metadata name and ID.
+  void getHandlerNames(SmallVectorImpl<std::pair<unsigned, StringRef> >&) const;
 
   /// ValueIsDeleted - This handler is used to update metadata store
   /// when a value is deleted.
index f45114c6ff18df8ca9cdea9de63b15bcd38404f6..69b2c6f3f37a09ecd03ccb96da3ca3d48608878a 100644 (file)
@@ -304,13 +304,14 @@ MetadataContext::getMDs(const Instruction *Inst) {
   return &I->second;
 }
 
-/// getHandlerNames - Get handler names. This is used by bitcode
-/// writer and aswm writer.
+/// getHandlerNames - Populate client supplied smallvector using custome
+/// metadata name and ID.
 void MetadataContext::
 getHandlerNames(SmallVectorImpl<std::pair<unsigned, StringRef> >&Names) const {
   for (StringMap<unsigned>::const_iterator I = MDHandlerNames.begin(),
          E = MDHandlerNames.end(); I != E; ++I) 
     Names.push_back(std::make_pair(I->second, I->first()));
+  std::sort(Names.begin(), Names.end());
 }
 
 /// ValueIsCloned - This handler is used to update metadata store