We already reported an error for
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 12 Mar 2013 16:45:13 +0000 (16:45 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 12 Mar 2013 16:45:13 +0000 (16:45 +0000)
commitcfd2528a46a8b054c735d1485fde12e3b99fa0d7
tree54046a25353978b0425839652d834cd55435f22a
parenta5151271e67584aa7563de49614bd3bc7bc3d1ff
We already reported an error for

extern "C" {
  void test5_f() {
    extern int test5_b;
  }
}
static float test5_b;

This patch makes us report one for

extern "C" {
  void test6_f() {
    extern int test6_b;
  }
}
extern "C" {
  static float test6_b;
}

Not because we think the declaration would be extern C, but because of the rule:

An entity with C language linkage shall not be declared with the same name as an entity in global scope...

We were just not looking past the extern "C" to see if the decl was in global
scope.

llvm-svn: 176875
clang/lib/Sema/SemaDecl.cpp
clang/test/SemaCXX/function-redecl.cpp