]> granicus.if.org Git - clang/commit
[dllexport] Sort out emission order of delayed exported classes
authorReid Kleckner <rnk@google.com>
Fri, 26 Feb 2016 19:51:02 +0000 (19:51 +0000)
committerReid Kleckner <rnk@google.com>
Fri, 26 Feb 2016 19:51:02 +0000 (19:51 +0000)
commit52f870716dd60f48db8803756c63e4e705d5b0c1
tree6473cd2357373a81fd90ad491db99c50890fdc96
parentc2b042f2f751cb7cf79b0a3dde54b281192456dc
[dllexport] Sort out emission order of delayed exported classes

Relands r260194 with a fix. If we have a template that transitions from
an extern template to an explicitly instantiated dllexport template, we
would add that class to the delayed exported class list without flushing
it.

For explicit instantiations, we can just flush the list of delayed
classes immediately. We don't have to worry about the bug fixed in
r260194 in this case because explicit instantiations can only occur at
file and namespace scope.

Fixes PR26490.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262056 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Sema/Sema.h
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaTemplate.cpp
lib/Sema/SemaTemplateInstantiate.cpp
test/CodeGenCXX/dllexport-pr26549.cpp [new file with mode: 0644]
test/CodeGenCXX/dllexport.cpp