// RUN: %clang_cc1 -fsyntax-only -verify %s extern "C" { extern "C" void f(int); } extern "C++" { extern "C++" int& g(int); float& g(); } double& g(double); void test(int x, double d) { f(x); float &f1 = g(); int& i1 = g(x); double& d1 = g(d); } extern "C" int foo; extern "C" int foo; extern "C" const int bar; extern "C" int const bar; // extern "C" struct bar d; extern struct bar e; extern "C++" { namespace N0 { struct X0 { int foo(int x) { return x; } }; } } // PR5430 namespace pr5430 { extern "C" void func(void); } using namespace pr5430; extern "C" void pr5430::func(void) { } // PR5404 int f2(char *) { return 0; } extern "C" { int f2(int) { return f2((char *)0); } }