xref: /aosp_15_r20/external/clang/test/CodeGen/attr-weakref2.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm -triple i386-linux-gnu -o %t %s
2*67e74705SXin Li // RUN: FileCheck --input-file=%t %s
3*67e74705SXin Li 
4*67e74705SXin Li // CHECK: @test1_f = extern_weak global i32
5*67e74705SXin Li extern int test1_f;
6*67e74705SXin Li static int test1_g __attribute__((weakref("test1_f")));
test1_h(void)7*67e74705SXin Li int test1_h(void) {
8*67e74705SXin Li   return test1_g;
9*67e74705SXin Li }
10*67e74705SXin Li 
11*67e74705SXin Li // CHECK: @test2_f = common global i32 0, align 4
12*67e74705SXin Li int test2_f;
13*67e74705SXin Li static int test2_g __attribute__((weakref("test2_f")));
test2_h(void)14*67e74705SXin Li int test2_h(void) {
15*67e74705SXin Li   return test2_g;
16*67e74705SXin Li }
17*67e74705SXin Li 
18*67e74705SXin Li // CHECK: @test3_f = external global i32
19*67e74705SXin Li extern int test3_f;
20*67e74705SXin Li static int test3_g __attribute__((weakref("test3_f")));
test3_foo(void)21*67e74705SXin Li int test3_foo(void) {
22*67e74705SXin Li   return test3_f;
23*67e74705SXin Li }
test3_h(void)24*67e74705SXin Li int test3_h(void) {
25*67e74705SXin Li   return test3_g;
26*67e74705SXin Li }
27*67e74705SXin Li 
28*67e74705SXin Li // CHECK: @test4_f = common global i32 0, align 4
29*67e74705SXin Li extern int test4_f;
30*67e74705SXin Li static int test4_g __attribute__((weakref("test4_f")));
test4_h(void)31*67e74705SXin Li int test4_h(void) {
32*67e74705SXin Li   return test4_g;
33*67e74705SXin Li }
34*67e74705SXin Li int test4_f;
35*67e74705SXin Li 
36*67e74705SXin Li // CHECK: @test5_f = external global i32
37*67e74705SXin Li extern int test5_f;
38*67e74705SXin Li static int test5_g __attribute__((weakref("test5_f")));
test5_h(void)39*67e74705SXin Li int test5_h(void) {
40*67e74705SXin Li   return test5_g;
41*67e74705SXin Li }
test5_foo(void)42*67e74705SXin Li int test5_foo(void) {
43*67e74705SXin Li   return test5_f;
44*67e74705SXin Li }
45*67e74705SXin Li 
46*67e74705SXin Li // CHECK: @test6_f = extern_weak global i32
47*67e74705SXin Li extern int test6_f __attribute__((weak));
48*67e74705SXin Li static int test6_g __attribute__((weakref("test6_f")));
test6_h(void)49*67e74705SXin Li int test6_h(void) {
50*67e74705SXin Li   return test6_g;
51*67e74705SXin Li }
test6_foo(void)52*67e74705SXin Li int test6_foo(void) {
53*67e74705SXin Li   return test6_f;
54*67e74705SXin Li }
55