From ea8515051a112b187d50ced90ba7a912c05d655c Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Fri, 1 Aug 2014 20:09:39 +0000 Subject: [PATCH] Revert r214547 due to test breakage. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214549 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CodeGenModule.cpp | 13 +++---------- lib/CodeGen/ModuleBuilder.cpp | 9 +++------ 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp index 55d47060ff..a14558f975 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -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); } } diff --git a/lib/CodeGen/ModuleBuilder.cpp b/lib/CodeGen/ModuleBuilder.cpp index 52522e69ef..c5d18d3286 100644 --- a/lib/CodeGen/ModuleBuilder.cpp +++ b/lib/CodeGen/ModuleBuilder.cpp @@ -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; } -- 2.50.1