1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s 2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// CHECK: @var1 = external global i32 4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// CHECK: @_ZN1N4var2E = external global i32 5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// CHECK: @var5 = external global i32 6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// CHECK: @_ZN1N4var3E = external global i32 7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// CHECK: @_ZN1N4var4E = external global i32 8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// CHECK: declare i32 @_Z5func1v() 10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// CHECK: declare i32 @_ZN1N5func2Ev() 11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// CHECK: declare i32 @func4() 12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// CHECK: declare i32 @_ZN1N5func3Ev() 13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint f1() { 15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao extern int var1, func1(); 16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return var1 + func1(); 17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace N { 20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint f2() { 22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao extern int var2, func2(); 23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return var2 + func2(); 24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct S { 27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao static int f3() { 28ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao extern int var3, func3(); 29ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct LC { int localfunc() { extern int var4; return var4; } }; 30ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao LC localobj; 31ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return var3 + func3() + localobj.localfunc(); 32ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 33ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}; 34ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 35ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint anchorf3() { return S::f3(); } 36ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 37ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoextern "C" { 38ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint f4() { 39ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao extern int var5, func4(); 40ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return var5 + func4(); 41ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 42ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 43ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 44ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 45ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 46