diff options
| author | John McCall <rjmccall@apple.com> | 2010-08-02 21:13:48 +0000 |
|---|---|---|
| committer | John McCall <rjmccall@apple.com> | 2010-08-02 21:13:48 +0000 |
| commit | 8b0f4ff317be790b964821fd1ab854e3398dcc0c (patch) | |
| tree | 1b430a0051eab4b1ab6608913cf030c0ded59856 /clang/lib/Sema/SemaDeclCXX.cpp | |
| parent | b1cf1ca19a648989099c2f013b1a7bb4c41117d2 (diff) | |
| download | bcm5719-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.cpp | 8 |
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); } |

