Avoid repeatedly reallocating the FoldingSetNodeID when searching
through multiple nodes in a bucket.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54687 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Support/FoldingSet.cpp b/lib/Support/FoldingSet.cpp
index 5f1de4a..6966ec8 100644
--- a/lib/Support/FoldingSet.cpp
+++ b/lib/Support/FoldingSet.cpp
@@ -232,6 +232,7 @@
   Buckets[NumBuckets] = reinterpret_cast<void*>(-1);
 
   // Walk the old buckets, rehashing nodes into their new place.
+  FoldingSetNodeID ID;
   for (unsigned i = 0; i != OldNumBuckets; ++i) {
     void *Probe = OldBuckets[i];
     if (!Probe) continue;
@@ -241,9 +242,9 @@
       NodeInBucket->SetNextInBucket(0);
 
       // Insert the node into the new bucket, after recomputing the hash.
-      FoldingSetNodeID ID;
       GetNodeProfile(ID, NodeInBucket);
       InsertNode(NodeInBucket, GetBucketFor(ID, Buckets, NumBuckets));
+      ID.clear();
     }
   }
   
@@ -262,13 +263,14 @@
   
   InsertPos = 0;
   
+  FoldingSetNodeID OtherID;
   while (Node *NodeInBucket = GetNextPtr(Probe)) {
-    FoldingSetNodeID OtherID;
     GetNodeProfile(OtherID, NodeInBucket);
     if (OtherID == ID)
       return NodeInBucket;
 
     Probe = NodeInBucket->getNextInBucket();
+    OtherID.clear();
   }
   
   // Didn't find the node, return null with the bucket as the InsertPos.