1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple -o - %s | FileCheck %s 2*67e74705SXin Li // pr6644 3*67e74705SXin Li 4*67e74705SXin Li extern "C" { 5*67e74705SXin Li namespace N { 6*67e74705SXin Li struct X { 7*67e74705SXin Li virtual void f(); 8*67e74705SXin Li }; f()9*67e74705SXin Li void X::f() { } 10*67e74705SXin Li } 11*67e74705SXin Li } 12*67e74705SXin Li 13*67e74705SXin Li // CHECK-LABEL: define {{.*}}void @_ZN1N1X1fEv 14*67e74705SXin Li 15*67e74705SXin Li extern "C" { test2_f()16*67e74705SXin Li static void test2_f() { 17*67e74705SXin Li } 18*67e74705SXin Li // CHECK-LABEL: define internal {{.*}}void @_ZL7test2_fv test2_f(int x)19*67e74705SXin Li static void test2_f(int x) { 20*67e74705SXin Li } 21*67e74705SXin Li // CHECK-LABEL: define internal {{.*}}void @_ZL7test2_fi test2_use()22*67e74705SXin Li void test2_use() { 23*67e74705SXin Li test2_f(); 24*67e74705SXin Li test2_f(42); 25*67e74705SXin Li } 26*67e74705SXin Li } 27*67e74705SXin Li 28*67e74705SXin Li extern "C" { 29*67e74705SXin Li struct test3_s { 30*67e74705SXin Li }; operator ==(const int & a,const test3_s & b)31*67e74705SXin Li bool operator==(const int& a, const test3_s& b) { 32*67e74705SXin Li } 33*67e74705SXin Li } 34