diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-08-01 19:59:14 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-08-01 19:59:14 +0000 |
commit | cf08ff50dd35e1a75d3237b2e297683922a9518d (patch) | |
tree | 99b5e317d9f49578765669d7c5db84dc616e03a8 /clang/lib/CodeGen/ModuleBuilder.cpp | |
parent | 1f52b3da0af421d117b5ec50c0be7e75e4301b37 (diff) | |
download | bcm5719-llvm-cf08ff50dd35e1a75d3237b2e297683922a9518d.tar.gz bcm5719-llvm-cf08ff50dd35e1a75d3237b2e297683922a9518d.zip |
Fix iterator invalidation issues that are breaking my modules buildbot's bootstrap.
llvm-svn: 214547
Diffstat (limited to 'clang/lib/CodeGen/ModuleBuilder.cpp')
-rw-r--r-- | clang/lib/CodeGen/ModuleBuilder.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/clang/lib/CodeGen/ModuleBuilder.cpp b/clang/lib/CodeGen/ModuleBuilder.cpp index c5d18d3286a..52522e69ef3 100644 --- a/clang/lib/CodeGen/ModuleBuilder.cpp +++ b/clang/lib/CodeGen/ModuleBuilder.cpp @@ -94,10 +94,13 @@ namespace { for (DeclGroupRef::iterator I = DG.begin(), E = DG.end(); I != E; ++I) Builder->EmitTopLevelDecl(*I); - // Emit any deferred inline method definitions. - for (CXXMethodDecl *MD : DeferredInlineMethodDefinitions) + // 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(); Builder->EmitTopLevelDecl(MD); - DeferredInlineMethodDefinitions.clear(); + } return true; } |