Skip to content

Commit 896e971

Browse files
committed
[CIR] Update testds for global vars
This change updates a few tests for global variable handling to also check classic codegen output so we can easily verify consistency between the two and will be alerted if the classic codegen changes. This was useful in developing forthcoming changes to global linkage handling.
1 parent e2f118d commit 896e971

File tree

3 files changed

+99
-44
lines changed

3 files changed

+99
-44
lines changed
Lines changed: 70 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,137 @@
11
// Global variables of intergal types
2-
// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o - | FileCheck %s
3-
4-
// Note: Currently unsupported features include alignment..
2+
// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t-cir.ll
3+
// RUN: FileCheck %s --input-file %t-cir.ll
4+
// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t.ll
5+
// RUN: FileCheck %s -check-prefix=OGCG --input-file %t.ll
56

67
char c;
7-
// CHECK: @c = dso_local global i8 0
8+
// CHECK: @c = dso_local global i8 0, align 1
9+
// OGCG: @c = dso_local global i8 0, align 1
810

911
signed char sc;
10-
// CHECK: @sc = dso_local global i8 0
12+
// CHECK: @sc = dso_local global i8 0, align 1
13+
// OGCG: @sc = dso_local global i8 0, align 1
1114

1215
unsigned char uc;
13-
// CHECK: @uc = dso_local global i8 0
16+
// CHECK: @uc = dso_local global i8 0, align 1
17+
// OGCG: @uc = dso_local global i8 0, align 1
1418

1519
short ss;
16-
// CHECK: @ss = dso_local global i16 0
20+
// CHECK: @ss = dso_local global i16 0, align 2
21+
// OGCG: @ss = dso_local global i16 0, align 2
1722

1823
unsigned short us = 100;
19-
// CHECK: @us = dso_local global i16 100
24+
// CHECK: @us = dso_local global i16 100, align 2
25+
// OGCG: @us = dso_local global i16 100, align 2
2026

2127
int si = 42;
22-
// CHECK: @si = dso_local global i32 42
28+
// CHECK: @si = dso_local global i32 42, align 4
29+
// OGCG: @si = dso_local global i32 42, align 4
2330

2431
unsigned ui;
25-
// CHECK: @ui = dso_local global i32 0
32+
// CHECK: @ui = dso_local global i32 0, align 4
33+
// OGCG: @ui = dso_local global i32 0, align 4
2634

2735
long sl;
28-
// CHECK: @sl = dso_local global i64 0
36+
// CHECK: @sl = dso_local global i64 0, align 8
37+
// OGCG: @sl = dso_local global i64 0, align 8
2938

3039
unsigned long ul;
31-
// CHECK: @ul = dso_local global i64 0
40+
// CHECK: @ul = dso_local global i64 0, align 8
41+
// OGCG: @ul = dso_local global i64 0, align 8
3242

3343
long long sll;
34-
// CHECK: @sll = dso_local global i64 0
44+
// CHECK: @sll = dso_local global i64 0, align 8
45+
// OGCG: @sll = dso_local global i64 0, align 8
3546

3647
unsigned long long ull = 123456;
37-
// CHECK: @ull = dso_local global i64 123456
48+
// CHECK: @ull = dso_local global i64 123456, align 8
49+
// OGCG: @ull = dso_local global i64 123456, align 8
3850

3951
__int128 s128;
40-
// CHECK: @s128 = dso_local global i128 0
52+
// CHECK: @s128 = dso_local global i128 0, align 16
53+
// OGCG: @s128 = dso_local global i128 0, align 16
4154

4255
unsigned __int128 u128;
43-
// CHECK: @u128 = dso_local global i128 0
56+
// CHECK: @u128 = dso_local global i128 0, align 16
57+
// OGCG: @u128 = dso_local global i128 0, align 16
4458

4559
wchar_t wc;
46-
// CHECK: @wc = dso_local global i32 0
60+
// CHECK: @wc = dso_local global i32 0, align 4
61+
// OGCG: @wc = dso_local global i32 0, align 4
4762

4863
char8_t c8;
49-
// CHECK: @c8 = dso_local global i8 0
64+
// CHECK: @c8 = dso_local global i8 0, align 1
65+
// OGCG: @c8 = dso_local global i8 0, align 1
5066

5167
char16_t c16;
52-
// CHECK: @c16 = dso_local global i16 0
68+
// CHECK: @c16 = dso_local global i16 0, align 2
69+
// OGCG: @c16 = dso_local global i16 0, align 2
5370

5471
char32_t c32;
55-
// CHECK: @c32 = dso_local global i32 0
72+
// CHECK: @c32 = dso_local global i32 0, align 4
73+
// OGCG: @c32 = dso_local global i32 0, align 4
5674

5775
_BitInt(20) sb20;
58-
// CHECK: @sb20 = dso_local global i20 0
76+
// CHECK: @sb20 = dso_local global i20 0, align 4
77+
// OGCG: @sb20 = dso_local global i20 0, align 4
5978

6079
unsigned _BitInt(48) ub48;
61-
// CHECK: @ub48 = dso_local global i48 0
80+
// CHECK: @ub48 = dso_local global i48 0, align 8
81+
// OGCG: @ub48 = dso_local global i48 0, align 8
6282

6383
bool boolfalse = false;
64-
// CHECK: @boolfalse = dso_local global i8 0
84+
// CHECK: @boolfalse = dso_local global i8 0, align 1
85+
// OGCG: @boolfalse = dso_local global i8 0, align 1
6586

6687
_Float16 f16;
67-
// CHECK: @f16 = dso_local global half
88+
// CHECK: @f16 = dso_local global half 0xH0000, align 2
89+
// OGCG: @f16 = dso_local global half 0xH0000, align 2
6890

6991
__bf16 bf16;
70-
// CHECK: @bf16 = dso_local global bfloat
92+
// CHECK: @bf16 = dso_local global bfloat 0xR0000, align 2
93+
// OGCG: @bf16 = dso_local global bfloat 0xR0000, align 2
7194

7295
float f;
73-
// CHECK: @f = dso_local global float 0.000000e+00
96+
// CHECK: @f = dso_local global float 0.000000e+00, align 4
97+
// OGCG: @f = dso_local global float 0.000000e+00, align 4
7498

7599
double d = 1.25;
76-
// CHECK: @d = dso_local global double 1.250000e+00
100+
// CHECK: @d = dso_local global double 1.250000e+00, align 8
101+
// OGCG: @d = dso_local global double 1.250000e+00, align 8
77102

78103
long double ld;
79-
// CHECK: @ld = dso_local global x86_fp80 0xK00
104+
// CHECK: @ld = dso_local global x86_fp80 0xK00000000000000000000, align 16
105+
// OGCG: @ld = dso_local global x86_fp80 0xK00000000000000000000, align 16
80106

81107
__float128 f128;
82-
// CHECK: @f128 = dso_local global fp128 0xL00
108+
// CHECK: @f128 = dso_local global fp128 0xL00000000000000000000000000000000, align 16
109+
// OGCG: @f128 = dso_local global fp128 0xL00000000000000000000000000000000, align 16
83110

84111
void *vp;
85-
// CHECK: @vp = dso_local global ptr null
112+
// CHECK: @vp = dso_local global ptr null, align 8
113+
// OGCG: @vp = dso_local global ptr null, align 8
86114

87115
int *ip = 0;
88-
// CHECK: @ip = dso_local global ptr null
116+
// CHECK: @ip = dso_local global ptr null, align 8
117+
// OGCG: @ip = dso_local global ptr null, align 8
89118

90119
double *dp;
91-
// CHECK: @dp = dso_local global ptr null
120+
// CHECK: @dp = dso_local global ptr null, align 8
121+
// OGCG: @dp = dso_local global ptr null, align 8
92122

93123
char **cpp;
94-
// CHECK: @cpp = dso_local global ptr null
124+
// CHECK: @cpp = dso_local global ptr null, align 8
125+
// OGCG: @cpp = dso_local global ptr null, align 8
95126

96127
void (*fp)();
97-
// CHECK: @fp = dso_local global ptr null
128+
// CHECK: @fp = dso_local global ptr null, align 8
129+
// OGCG: @fp = dso_local global ptr null, align 8
98130

99131
int (*fpii)(int) = 0;
100-
// CHECK: @fpii = dso_local global ptr null
132+
// CHECK: @fpii = dso_local global ptr null, align 8
133+
// OGCG: @fpii = dso_local global ptr null, align 8
101134

102135
void (*fpvar)(int, ...);
103-
// CHECK: @fpvar = dso_local global ptr null
136+
// CHECK: @fpvar = dso_local global ptr null, align 8
137+
// OGCG: @fpvar = dso_local global ptr null, align 8

clang/test/CIR/Lowering/hello.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
// Smoke test for ClangIR-to-LLVM IR code generation
2-
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o - | FileCheck %s
2+
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t-cir.ll
3+
// RUN: FileCheck %s --input-file %t-cir.ll
4+
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t.ll
5+
// RUN: FileCheck %s -check-prefix=OGCG --input-file %t.ll
36

47
int a;
58

6-
// CHECK: @a = dso_local global i32 0
9+
// CHECK: @a = dso_local global i32 0, align 4
10+
// OGCG: @a = dso_local global i32 0, align 4
711

812
int b = 2;
913

10-
// CHECK: @b = dso_local global i32 2
14+
// CHECK: @b = dso_local global i32 2, align 4
15+
// OGCG: @b = dso_local global i32 2, align 4

clang/test/CIR/global-var-linkage.cpp

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,27 @@
11
// Linkage types of global variables
2-
// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o - | FileCheck %s
2+
// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o %t.cir
3+
// RUN: FileCheck %s -check-prefix=CIR --input-file %t.cir
4+
// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t-cir.ll
5+
// RUN: FileCheck %s -check-prefix=LLVM --input-file %t-cir.ll
6+
// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t.ll
7+
// RUN: FileCheck %s -check-prefix=OGCG --input-file %t.ll
38

49
int aaaa;
5-
// CHECK: cir.global external @aaaa
10+
// CIR: cir.global external @aaaa
11+
// LLVM: @aaaa = dso_local global i32 0
12+
// OGCG: @aaaa = dso_local global i32 0
13+
614
static int bbbb;
7-
// CHECK: cir.global internal @_ZL4bbbb
15+
// CIR: cir.global internal @_ZL4bbbb
16+
// LLVM: @_ZL4bbbb = internal global i32 0
17+
// OGCG: @_ZL4bbbb = internal global i32 0
18+
819
inline int cccc;
9-
// CHECK: cir.global linkonce_odr @cccc
20+
// CIR: cir.global linkonce_odr @cccc
21+
// LLVM: @cccc = linkonce_odr dso_local global i32 0
22+
// OGCG: @cccc = linkonce_odr dso_local global i32 0
23+
1024
[[gnu::selectany]] int dddd;
11-
// CHECK: cir.global weak_odr @dddd
25+
// CIR: cir.global weak_odr @dddd
26+
// LLVM: @dddd = weak_odr dso_local global i32 0
27+
// OGCG: @dddd = weak_odr dso_local global i32 0

0 commit comments

Comments
 (0)