summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-08-02 21:13:48 +0000
committerJohn McCall <rjmccall@apple.com>2010-08-02 21:13:48 +0000
commit8b0f4ff317be790b964821fd1ab854e3398dcc0c (patch)
tree1b430a0051eab4b1ab6608913cf030c0ded59856 /clang/lib/Sema/SemaDeclCXX.cpp
parentb1cf1ca19a648989099c2f013b1a7bb4c41117d2 (diff)
downloadbcm5719-llvm-8b0f4ff317be790b964821fd1ab854e3398dcc0c.tar.gz
bcm5719-llvm-8b0f4ff317be790b964821fd1ab854e3398dcc0c.zip
Further adjustments to -Wglobal-constructors; works for references and direct
initializations now. llvm-svn: 110063
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index a0bc5840cdb..5677b5c9933 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -5461,6 +5461,14 @@ void Sema::AddCXXDirectInitializerToDecl(DeclPtrTy Dcl,
VDecl->setInit(Result.takeAs<Expr>());
VDecl->setCXXDirectInitializer(true);
+ if (!VDecl->isInvalidDecl() &&
+ !VDecl->getDeclContext()->isDependentContext() &&
+ VDecl->hasGlobalStorage() &&
+ !VDecl->getInit()->isConstantInitializer(Context,
+ VDecl->getType()->isReferenceType()))
+ Diag(VDecl->getLocation(), diag::warn_global_constructor)
+ << VDecl->getInit()->getSourceRange();
+
if (const RecordType *Record = VDecl->getType()->getAs<RecordType>())
FinalizeVarWithDestructor(VDecl, Record);
}
OpenPOWER on IntegriCloud