]> granicus.if.org Git - clang/commitdiff
Don't special case one line extern "C" decls.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 29 Mar 2013 07:02:31 +0000 (07:02 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 29 Mar 2013 07:02:31 +0000 (07:02 +0000)
We already avoided warning for

extern "C" const char *Version_string = "2.9";

now we also don't produce any warnings for

extern "C" {
  extern const char *Version_string2 = "2.9";
}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178333 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDecl.cpp
test/SemaCXX/linkage-spec.cpp

index ab4a17a30d5a0f64442bef7d6fd0668e998ab598..1c6bbedf5ef88daf9d9c3017a75a48e8a5b5c1b3 100644 (file)
@@ -7565,6 +7565,7 @@ void Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init,
     }
   } else if (VDecl->isFileVarDecl()) {
     if (VDecl->getStorageClassAsWritten() == SC_Extern &&
+        !VDecl->isExternC() &&
         (!getLangOpts().CPlusPlus ||
          !Context.getBaseElementType(VDecl->getType()).isConstQualified()))
       Diag(VDecl->getLocation(), diag::warn_extern_init);
index cb7e32c05d887080467afc86b007d77e16624cac..0ba95081245774970b47de7e1854d3277e688f97 100644 (file)
@@ -90,6 +90,10 @@ extern "C++" using N::value;
 // PR7076
 extern "C" const char *Version_string = "2.9";
 
+extern "C" {
+  extern const char *Version_string2 = "2.9";
+}
+
 namespace PR9162 {
   extern "C" {
     typedef struct _ArtsSink ArtsSink;