1923099773fe4bbc52a25a5d3d92236b5e37cef93Ulrich Weigand// RUN: %clang_cc1 %s -triple i386-unknown-unknown -emit-llvm -o - | FileCheck %s
27facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman
37facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman// CHECK: @var1 = external global i32
47facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman// CHECK: @_ZN1N4var2E = external global i32
57facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman// CHECK: @var5 = external global i32
67facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman// CHECK: @_ZN1N4var3E = external global i32
77facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman// CHECK: @_ZN1N4var4E = external global i32
87facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman
97facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman// CHECK: declare i32 @_Z5func1v()
107facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman// CHECK: declare i32 @_ZN1N5func2Ev()
117facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman// CHECK: declare i32 @func4()
127facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman// CHECK: declare i32 @_ZN1N5func3Ev()
137facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman
147facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedmanint f1() {
157facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman  extern int var1, func1();
167facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman  return var1 + func1();
177facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman}
187facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman
197facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedmannamespace N {
207facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman
217facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedmanint f2() {
227facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman  extern int var2, func2();
237facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman  return var2 + func2();
247facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman}
257facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman
267facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedmanstruct S {
277facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman  static int f3() {
287facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman    extern int var3, func3();
297facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman    struct LC { int localfunc() { extern int var4; return var4; } };
307facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman    LC localobj;
317facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman    return var3 + func3() + localobj.localfunc();
327facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman  }
337facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman};
347facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman
357facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedmanint anchorf3() { return S::f3(); }
367facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman
377facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedmanextern "C" {
387facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedmanint f4() {
397facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman  extern int var5, func4();
407facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman  return var5 + func4();
417facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman}
427facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman}
437facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman
447facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman}
457facf8408ff426be732b9eb62c58d42e6177dd7bEli Friedman
46