From: Steve Naroff Date: Wed, 15 Apr 2009 15:20:03 +0000 (+0000) Subject: Fix "warning: 'extern' variable has an initializer" not... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ee3899e1cabcbf70d9a316b33f9b79bf3189bd01;p=clang Fix "warning: 'extern' variable has an initializer" not correct for __private_extern__. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69167 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 6456ee8d9a..8b7e26de22 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -2488,7 +2488,7 @@ void Sema::AddInitializerToDecl(DeclPtrTy dcl, ExprArg init, bool DirectInit) { } } } else if (VDecl->isFileVarDecl()) { - if (VDecl->hasExternalStorage()) + if (VDecl->getStorageClass() == VarDecl::Extern) Diag(VDecl->getLocation(), diag::warn_extern_init); if (!VDecl->isInvalidDecl()) if (CheckInitializerTypes(Init, DclT, VDecl->getLocation(), diff --git a/test/Sema/private-extern.c b/test/Sema/private-extern.c index f787b7d488..5dd37f430e 100644 --- a/test/Sema/private-extern.c +++ b/test/Sema/private-extern.c @@ -85,5 +85,4 @@ extern int g18 = 0; // expected-warning{{'extern' variable has an initializer}} __private_extern__ int g19; int g19 = 0; -// FIXME: linkage specifier in warning. -__private_extern__ int g20 = 0; // expected-warning{{'extern' variable has an initializer}} +__private_extern__ int g20 = 0;