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