xref: /aosp_15_r20/external/clang/test/CodeGenCXX/mangle-extern-local.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -triple i386-unknown-unknown -emit-llvm -o - | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li // CHECK: @var1 = external global i32
4*67e74705SXin Li // CHECK: @_ZN1N4var2E = external global i32
5*67e74705SXin Li // CHECK: @var5 = external global i32
6*67e74705SXin Li // CHECK: @_ZN1N4var3E = external global i32
7*67e74705SXin Li // CHECK: @_ZN1N4var4E = external global i32
8*67e74705SXin Li 
9*67e74705SXin Li // CHECK: declare i32 @_Z5func1v()
10*67e74705SXin Li // CHECK: declare i32 @_ZN1N5func2Ev()
11*67e74705SXin Li // CHECK: declare i32 @func4()
12*67e74705SXin Li // CHECK: declare i32 @_ZN1N5func3Ev()
13*67e74705SXin Li 
f1()14*67e74705SXin Li int f1() {
15*67e74705SXin Li   extern int var1, func1();
16*67e74705SXin Li   return var1 + func1();
17*67e74705SXin Li }
18*67e74705SXin Li 
19*67e74705SXin Li namespace N {
20*67e74705SXin Li 
f2()21*67e74705SXin Li int f2() {
22*67e74705SXin Li   extern int var2, func2();
23*67e74705SXin Li   return var2 + func2();
24*67e74705SXin Li }
25*67e74705SXin Li 
26*67e74705SXin Li struct S {
f3N::S27*67e74705SXin Li   static int f3() {
28*67e74705SXin Li     extern int var3, func3();
29*67e74705SXin Li     struct LC { int localfunc() { extern int var4; return var4; } };
30*67e74705SXin Li     LC localobj;
31*67e74705SXin Li     return var3 + func3() + localobj.localfunc();
32*67e74705SXin Li   }
33*67e74705SXin Li };
34*67e74705SXin Li 
anchorf3()35*67e74705SXin Li int anchorf3() { return S::f3(); }
36*67e74705SXin Li 
37*67e74705SXin Li extern "C" {
f4()38*67e74705SXin Li int f4() {
39*67e74705SXin Li   extern int var5, func4();
40*67e74705SXin Li   return var5 + func4();
41*67e74705SXin Li }
42*67e74705SXin Li }
43*67e74705SXin Li 
44*67e74705SXin Li }
45*67e74705SXin Li 
46