diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-04-16 15:34:14 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-04-16 15:34:14 +0000 |
commit | 6463ef4caf2fb576d38b1b2e15a29ac9f2abb3e7 (patch) | |
tree | 6b8a8359a06200b895655b5cb8a9e6b538a2d136 /lib/CodeGen/CodeGenModule.cpp | |
parent | 9e820ee054fefe5422b4db3f681e567a8976747e (diff) |
Ensure that the most recent declaration of a tentative definition wins
when generating a common definition.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69287 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CodeGenModule.cpp')
-rw-r--r-- | lib/CodeGen/CodeGenModule.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp index 81bff667fb..d1d67a11b8 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -424,9 +424,11 @@ void CodeGenModule::EmitDeferred() { EmitGlobalDefinition(D); } - // Emit any tentative definitions. - for (std::vector<const VarDecl*>::iterator it = TentativeDefinitions.begin(), - ie = TentativeDefinitions.end(); it != ie; ++it) + // Emit any tentative definitions, in reverse order so the most + // important (merged) decl will be seen and emitted first. + for (std::vector<const VarDecl*>::reverse_iterator + it = TentativeDefinitions.rbegin(), ie = TentativeDefinitions.rend(); + it != ie; ++it) EmitTentativeDefinition(*it); } |