11// Tests that we assign appropriate identifiers to indirect calls and targets.
22
33// RUN: %clang_cc1 -triple x86_64-unknown-linux -fexperimental-call-graph-section \
4- // RUN: -emit-llvm -o - %s | FileCheck --check-prefixes=CHECK, ITANIUM %s
4+ // RUN: -emit-llvm -o - %s | FileCheck --check-prefixes=ITANIUM %s
55
66// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc -fexperimental-call-graph-section \
7- // RUN: -emit-llvm -o - %s | FileCheck --check-prefixes=CHECK, MS %s
7+ // RUN: -emit-llvm -o - %s | FileCheck --check-prefixes=MS %s
88
9- // CHECK-LABEL: define {{(dso_local)?}} void @foo(
10- // CHECK: {{.*}} !type [[F_TVOID:![0-9]+]]
9+ // ITANIUM-LABEL: define {{(dso_local)?}} void @foo(
10+ // ITANIUM: {{.*}} !type [[F_TVOID:![0-9]+]]
11+ // MS-LABEL: define {{(dso_local)?}} void @foo(
12+ // MS: {{.*}} !type [[F_TVOID:![0-9]+]]
1113void foo () {
1214}
1315
14- // CHECK-LABEL: define {{(dso_local)?}} void @bar(
15- // CHECK: {{.*}} !type [[F_TVOID]]
16+ // ITANIUM-LABEL: define {{(dso_local)?}} void @bar(
17+ // ITANIUM: {{.*}} !type [[F_TVOID]]
18+ // MS-LABEL: define {{(dso_local)?}} void @bar(
19+ // MS: {{.*}} !type [[F_TVOID]]
1620void bar () {
1721 void (* fp )() = foo ;
18- // CHECK: call {{.*}}, !callee_type [[F_TVOID_CT:![0-9]+]]
22+ // ITANIUM: call {{.*}}, !callee_type [[F_TVOID_CT:![0-9]+]]
23+ // MS: call {{.*}}, !callee_type [[F_TVOID_CT:![0-9]+]]
1924 fp ();
2025}
2126
22- // CHECK-LABEL: define {{(dso_local)?}} i32 @baz(
23- // CHECK: {{.*}} !type [[F_TPRIMITIVE:![0-9]+]]
27+ // ITANIUM-LABEL: define {{(dso_local)?}} i32 @baz(
28+ // ITANIUM: {{.*}} !type [[F_TPRIMITIVE:![0-9]+]]
29+ // MS-LABEL: define {{(dso_local)?}} i32 @baz(
30+ // MS: {{.*}} !type [[F_TPRIMITIVE:![0-9]+]]
2431int baz (char a , float b , double c ) {
2532 return 1 ;
2633}
2734
28- // CHECK-LABEL: define {{(dso_local)?}} ptr @qux(
29- // CHECK: {{.*}} !type [[F_TPTR:![0-9]+]]
35+ // ITANIUM-LABEL: define {{(dso_local)?}} ptr @qux(
36+ // ITANIUM: {{.*}} !type [[F_TPTR:![0-9]+]]
37+ // MS-LABEL: define {{(dso_local)?}} ptr @qux(
38+ // MS: {{.*}} !type [[F_TPTR:![0-9]+]]
3039int * qux (char * a , float * b , double * c ) {
3140 return 0 ;
3241}
3342
34- // CHECK-LABEL: define {{(dso_local)?}} void @corge(
35- // CHECK: {{.*}} !type [[F_TVOID]]
43+ // ITANIUM-LABEL: define {{(dso_local)?}} void @corge(
44+ // ITANIUM: {{.*}} !type [[F_TVOID]]
45+ // MS-LABEL: define {{(dso_local)?}} void @corge(
46+ // MS: {{.*}} !type [[F_TVOID]]
3647void corge () {
3748 int (* fp_baz )(char , float , double ) = baz ;
38- // CHECK: call i32 {{.*}}, !callee_type [[F_TPRIMITIVE_CT:![0-9]+]]
49+ // ITANIUM: call i32 {{.*}}, !callee_type [[F_TPRIMITIVE_CT:![0-9]+]]
50+ // MS: call i32 {{.*}}, !callee_type [[F_TPRIMITIVE_CT:![0-9]+]]
3951 fp_baz ('a' , .0f , .0 );
4052
4153 int * (* fp_qux )(char * , float * , double * ) = qux ;
42- // CHECK: call ptr {{.*}}, !callee_type [[F_TPTR_CT:![0-9]+]]
54+ // ITANIUM: call ptr {{.*}}, !callee_type [[F_TPTR_CT:![0-9]+]]
55+ // MS: call ptr {{.*}}, !callee_type [[F_TPTR_CT:![0-9]+]]
4356 fp_qux (0 , 0 , 0 );
4457}
4558
@@ -51,40 +64,49 @@ struct st2 {
5164 struct st1 m ;
5265};
5366
54- // CHECK-LABEL: define {{(dso_local)?}} void @stparam(
55- // CHECK: {{.*}} !type [[F_TSTRUCT:![0-9]+]]
67+ // ITANIUM-LABEL: define {{(dso_local)?}} void @stparam(
68+ // ITANIUM: {{.*}} !type [[F_TSTRUCT:![0-9]+]]
69+ // MS-LABEL: define {{(dso_local)?}} void @stparam(
70+ // MS: {{.*}} !type [[F_TSTRUCT:![0-9]+]]
5671void stparam (struct st2 a , struct st2 * b ) {}
5772
58- // CHECK-LABEL: define {{(dso_local)?}} void @stf(
59- // CHECK: {{.*}} !type [[F_TVOID]]
73+ // ITANIUM-LABEL: define {{(dso_local)?}} void @stf(
74+ // ITANIUM: {{.*}} !type [[F_TVOID]]
75+ // MS-LABEL: define {{(dso_local)?}} void @stf(
76+ // MS: {{.*}} !type [[F_TVOID]]
6077void stf () {
6178 struct st1 St1 ;
6279 St1 .fp = qux ;
63- // CHECK: call ptr {{.*}}, !callee_type [[F_TPTR_CT:![0-9]+]]
80+ // ITANIUM: call ptr {{.*}}, !callee_type [[F_TPTR_CT:![0-9]+]]
81+ // MS: call ptr {{.*}}, !callee_type [[F_TPTR_CT:![0-9]+]]
6482 St1 .fp (0 , 0 , 0 );
6583
6684 struct st2 St2 ;
6785 St2 .m .fp = qux ;
68- // CHECK: call ptr {{.*}}, !callee_type [[F_TPTR_CT:![0-9]+]]
86+ // ITANIUM: call ptr {{.*}}, !callee_type [[F_TPTR_CT:![0-9]+]]
87+ // MS: call ptr {{.*}}, !callee_type [[F_TPTR_CT:![0-9]+]]
6988 St2 .m .fp (0 , 0 , 0 );
7089
71- // CHECK: call void {{.*}}, !callee_type [[F_TSTRUCT_CT:![0-9]+]]
90+ // ITANIUM: call void {{.*}}, !callee_type [[F_TSTRUCT_CT:![0-9]+]]
91+ // MS: call void {{.*}}, !callee_type [[F_TSTRUCT_CT:![0-9]+]]
7292 void (* fp_stparam )(struct st2 , struct st2 * ) = stparam ;
7393 fp_stparam (St2 , & St2 );
7494}
7595
76- // CHECK-DAG: [[F_TVOID_CT]] = !{[[F_TVOID:![0-9]+]]}
77- // ITANIUM-DAG: [[F_TVOID]] = !{i64 0, !"_ZTSFvE.generalized"}
78- // MS-DAG: [[F_TVOID]] = !{i64 0, !"[email protected] "} 79-
80- // CHECK-DAG: [[F_TPRIMITIVE_CT]] = !{[[F_TPRIMITIVE:![0-9]+]]}
81- // ITANIUM-DAG: [[F_TPRIMITIVE]] = !{i64 0, !"_ZTSFicfdE.generalized"}
82- // MS-DAG: [[F_TPRIMITIVE]] = !{i64 0, !"[email protected] "} 83-
84- // CHECK-DAG: [[F_TPTR_CT]] = !{[[F_TPTR:![0-9]+]]}
85- // ITANIUM-DAG: [[F_TPTR]] = !{i64 0, !"_ZTSFPiPcPfPdE.generalized"}
86- // MS-DAG: [[F_TPTR]] = !{i64 0, !"[email protected] "} 87-
88- // CHECK-DAG: [[F_TSTRUCT_CT]] = !{[[F_TSTRUCT:![0-9]+]]}
89- // ITANIUM-DAG: [[F_TSTRUCT]] = !{i64 0, !"_ZTSFv3st2PS_E.generalized"}
90- // MS-DAG: [[F_TSTRUCT]] = !{i64 0, !"?6AXUst2@@PEAU0@@Z.generalized"}
96+ // ITANIUM: [[F_TVOID]] = !{i64 0, !"_ZTSFvE.generalized"}
97+ // ITANIUM: [[F_TVOID_CT]] = !{[[F_TVOID:![0-9]+]]}
98+ // ITANIUM: [[F_TPRIMITIVE]] = !{i64 0, !"_ZTSFicfdE.generalized"}
99+ // ITANIUM: [[F_TPTR]] = !{i64 0, !"_ZTSFPiPcPfPdE.generalized"}
100+ // ITANIUM: [[F_TPRIMITIVE_CT]] = !{[[F_TPRIMITIVE:![0-9]+]]}
101+ // ITANIUM: [[F_TPTR_CT]] = !{[[F_TPTR:![0-9]+]]}
102+ // ITANIUM: [[F_TSTRUCT]] = !{i64 0, !"_ZTSFv3st2PS_E.generalized"}
103+ // ITANIUM: [[F_TSTRUCT_CT]] = !{[[F_TSTRUCT:![0-9]+]]}
104+
105+ // MS: [[F_TVOID]] = !{i64 0, !"[email protected] "} 106+ // MS: [[F_TVOID_CT]] = !{[[F_TVOID:![0-9]+]]}
107+ // MS: [[F_TPRIMITIVE]] = !{i64 0, !"[email protected] "} 108+ // MS: [[F_TPTR]] = !{i64 0, !"[email protected] "} 109+ // MS: [[F_TPRIMITIVE_CT]] = !{[[F_TPRIMITIVE:![0-9]+]]}
110+ // MS: [[F_TPTR_CT]] = !{[[F_TPTR:![0-9]+]]}
111+ // MS: [[F_TSTRUCT]] = !{i64 0, !"?6AXUst2@@PEAU0@@Z.generalized"}
112+ // MS: [[F_TSTRUCT_CT]] = !{[[F_TSTRUCT:![0-9]+]]}
0 commit comments