If a global variable has an initializer with side effects, it can never be deferred (even if it's in an anonymous namespace).

llvm-svn: 94525
This commit is contained in:
Anders Carlsson
2010-01-26 06:15:16 +00:00
parent 91f61fc921
commit d6b21e4842
2 changed files with 18 additions and 3 deletions

View File

@@ -580,9 +580,8 @@ bool CodeGenModule::MayDeferGeneration(const ValueDecl *Global) {
// Static data may be deferred, but out-of-line static data members
// cannot be.
if (VD->isInAnonymousNamespace())
return true;
if (VD->getLinkage() == VarDecl::InternalLinkage) {
if (VD->getLinkage() == VarDecl::InternalLinkage ||
VD->isInAnonymousNamespace()) {
// Initializer has side effects?
if (VD->getInit() && VD->getInit()->HasSideEffects(Context))
return false;