namespace blanket rule for variables and functions declared 'extern
"C"'.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126400
91177308-0d34-0410-b5e6-
96231b3b80d8
return LinkageInfo::internal();
}
- if (D->isInAnonymousNamespace())
- return LinkageInfo::uniqueExternal();
+ if (D->isInAnonymousNamespace()) {
+ const VarDecl *Var = dyn_cast<VarDecl>(D);
+ const FunctionDecl *Func = dyn_cast<FunctionDecl>(D);
+ if ((!Var || !Var->isExternC()) && (!Func || !Func->isExternC()))
+ return LinkageInfo::uniqueExternal();
+ }
// Set up the defaults.
extern "C" void test3(A a) {}
}
+namespace {
+ // CHECK: define void @test4(
+ extern "C" void test4(void) {}
+}
+
// CHECK: define linkonce_odr i8* @_ZN5test21A1BILj0EE3fooEv(
// CHECK: define linkonce_odr i8* @_ZN5test11A3fooILj0EEEPvv(