xref: /aosp_15_r20/external/clang/test/CodeGen/annotations-var.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o %t1 %s
2*67e74705SXin Li // RUN: FileCheck --check-prefix=LOCAL %s < %t1
3*67e74705SXin Li // RUN: FileCheck --check-prefix=UNDEF %s < %t1
4*67e74705SXin Li // RUN: FileCheck --check-prefix=PARAM %s < %t1
5*67e74705SXin Li // END.
6*67e74705SXin Li 
7*67e74705SXin Li // LOCAL: private unnamed_addr constant [15 x i8] c"localvar_ann_{{.}}\00", section "llvm.metadata"
8*67e74705SXin Li // LOCAL: private unnamed_addr constant [15 x i8] c"localvar_ann_{{.}}\00", section "llvm.metadata"
9*67e74705SXin Li 
10*67e74705SXin Li // UNDEF: private unnamed_addr constant [15 x i8] c"undefvar_ann_0\00", section "llvm.metadata"
11*67e74705SXin Li 
12*67e74705SXin Li // PARAM: private unnamed_addr constant [12 x i8] c"param_ann_{{.}}\00", section "llvm.metadata"
13*67e74705SXin Li // PARAM: private unnamed_addr constant [12 x i8] c"param_ann_{{.}}\00", section "llvm.metadata"
14*67e74705SXin Li // PARAM: private unnamed_addr constant [12 x i8] c"param_ann_{{.}}\00", section "llvm.metadata"
15*67e74705SXin Li // PARAM: private unnamed_addr constant [12 x i8] c"param_ann_{{.}}\00", section "llvm.metadata"
16*67e74705SXin Li 
17*67e74705SXin Li int foo(int v __attribute__((annotate("param_ann_2"))) __attribute__((annotate("param_ann_3"))));
foo(int v)18*67e74705SXin Li int foo(int v __attribute__((annotate("param_ann_0"))) __attribute__((annotate("param_ann_1")))) {
19*67e74705SXin Li     return v + 1;
20*67e74705SXin Li // PARAM: define {{.*}}@foo
21*67e74705SXin Li // PARAM:      [[V:%.*]] = alloca i32
22*67e74705SXin Li // PARAM:      bitcast i32* [[V]] to i8*
23*67e74705SXin Li // PARAM-NEXT: call void @llvm.var.annotation(
24*67e74705SXin Li // PARAM-NEXT: bitcast i32* [[V]] to i8*
25*67e74705SXin Li // PARAM-NEXT: call void @llvm.var.annotation(
26*67e74705SXin Li // PARAM-NEXT: bitcast i32* [[V]] to i8*
27*67e74705SXin Li // PARAM-NEXT: call void @llvm.var.annotation(
28*67e74705SXin Li // PARAM-NEXT: bitcast i32* [[V]] to i8*
29*67e74705SXin Li // PARAM-NEXT: call void @llvm.var.annotation(
30*67e74705SXin Li }
31*67e74705SXin Li 
local(void)32*67e74705SXin Li void local(void) {
33*67e74705SXin Li     int localvar __attribute__((annotate("localvar_ann_0"))) __attribute__((annotate("localvar_ann_1"))) = 3;
34*67e74705SXin Li // LOCAL-LABEL: define void @local()
35*67e74705SXin Li // LOCAL:      [[LOCALVAR:%.*]] = alloca i32,
36*67e74705SXin Li // LOCAL-NEXT: [[T0:%.*]] = bitcast i32* [[LOCALVAR]] to i8*
37*67e74705SXin Li // LOCAL-NEXT: call void @llvm.var.annotation(i8* [[T0]], i8* getelementptr inbounds ([15 x i8], [15 x i8]* @{{.*}}), i8* getelementptr inbounds ({{.*}}), i32 33)
38*67e74705SXin Li // LOCAL-NEXT: [[T0:%.*]] = bitcast i32* [[LOCALVAR]] to i8*
39*67e74705SXin Li // LOCAL-NEXT: call void @llvm.var.annotation(i8* [[T0]], i8* getelementptr inbounds ([15 x i8], [15 x i8]* @{{.*}}), i8* getelementptr inbounds ({{.*}}), i32 33)
40*67e74705SXin Li }
41*67e74705SXin Li 
undef(void)42*67e74705SXin Li void undef(void) {
43*67e74705SXin Li     int undefvar __attribute__((annotate("undefvar_ann_0")));
44*67e74705SXin Li // UNDEF-LABEL: define void @undef()
45*67e74705SXin Li // UNDEF:      [[UNDEFVAR:%.*]] = alloca i32,
46*67e74705SXin Li // UNDEF-NEXT: [[T0:%.*]] = bitcast i32* [[UNDEFVAR]] to i8*
47*67e74705SXin Li // UNDEF-NEXT: call void @llvm.var.annotation(i8* [[T0]], i8* getelementptr inbounds ([15 x i8], [15 x i8]* @{{.*}}), i8* getelementptr inbounds ({{.*}}), i32 43)
48*67e74705SXin Li }
49