]> granicus.if.org Git - clang/commitdiff
Revert r214547 due to test breakage.
authorRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 1 Aug 2014 20:09:39 +0000 (20:09 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 1 Aug 2014 20:09:39 +0000 (20:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214549 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CodeGenModule.cpp
lib/CodeGen/ModuleBuilder.cpp

index 55d47060ff932940cc6ac243098c50002b3bb00e..a14558f975aafbf2d7f44df8c94f3430896b96be 100644 (file)
@@ -3305,16 +3305,9 @@ void CodeGenModule::EmitVersionIdentMetadata() {
 }
 
 void CodeGenModule::EmitTargetMetadata() {
-  // Warning, new MangledDeclNames may be appended within this loop.
-  // We rely on MapVector insertions adding new elements to the end
-  // of the container.
-  // FIXME: Move this loop into the one target that needs it, and only
-  // loop over those declarations for which we couldn't emit the target
-  // metadata when we emitted the declaration.
-  for (unsigned I = 0; I != MangledDeclNames.size(); ++I) {
-    auto &Val = *(MangledDeclNames.begin() + I);
-    const Decl *D = Val.first.getDecl()->getMostRecentDecl();
-    llvm::GlobalValue *GV = GetGlobalValue(Val.second);
+  for (auto &I : MangledDeclNames) {
+    const Decl *D = I.first.getDecl()->getMostRecentDecl();
+    llvm::GlobalValue *GV = GetGlobalValue(I.second);
     getTargetCodeGenInfo().emitTargetMD(D, GV, *this);
   }
 }
index 52522e69ef3a0b1ce923545cc1f7d296e356e596..c5d18d3286a7b820ddc7efcc6872a5877de6055f 100644 (file)
@@ -94,13 +94,10 @@ namespace {
       for (DeclGroupRef::iterator I = DG.begin(), E = DG.end(); I != E; ++I)
         Builder->EmitTopLevelDecl(*I);
 
-      // Emit any deferred inline method definitions. Note that more deferred
-      // methods may be added during this loop.
-      while (!DeferredInlineMethodDefinitions.empty()) {
-        CXXMethodDecl *MD = DeferredInlineMethodDefinitions.back();
-        DeferredInlineMethodDefinitions.pop_back();
+      // Emit any deferred inline method definitions.
+      for (CXXMethodDecl *MD : DeferredInlineMethodDefinitions)
         Builder->EmitTopLevelDecl(MD);
-      }
+      DeferredInlineMethodDefinitions.clear();
 
       return true;
     }