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