1
1
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2
- // RUN: %clang_cc1 -no-opaque-pointers - O0 -triple amdgcn---amdgiz -emit-llvm %s -o - | FileCheck %s
2
+ // RUN: %clang_cc1 -O0 -triple amdgcn---amdgiz -emit-llvm %s -o - | FileCheck %s
3
3
4
4
// CHECK-LABEL: @_Z5func1Pi(
5
5
// CHECK-NEXT: entry:
6
- // CHECK-NEXT: [[X_ADDR:%.*]] = alloca i32* , align 8, addrspace(5)
7
- // CHECK-NEXT: [[X_ADDR_ASCAST:%.*]] = addrspacecast i32* addrspace(5)* [[X_ADDR]] to i32**
8
- // CHECK-NEXT: store i32* [[X:%.*]], i32** [[X_ADDR_ASCAST]], align 8
9
- // CHECK-NEXT: [[TMP0:%.*]] = load i32*, i32** [[X_ADDR_ASCAST]], align 8
10
- // CHECK-NEXT: store i32 1, i32* [[TMP0]], align 4
6
+ // CHECK-NEXT: [[X_ADDR:%.*]] = alloca ptr , align 8, addrspace(5)
7
+ // CHECK-NEXT: [[X_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X_ADDR]] to ptr
8
+ // CHECK-NEXT: store ptr [[X:%.*]], ptr [[X_ADDR_ASCAST]], align 8
9
+ // CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X_ADDR_ASCAST]], align 8
10
+ // CHECK-NEXT: store i32 1, ptr [[TMP0]], align 4
11
11
// CHECK-NEXT: ret void
12
12
//
13
13
void func1 (int *x) {
@@ -19,25 +19,25 @@ void func1(int *x) {
19
19
// CHECK-NEXT: [[LV1:%.*]] = alloca i32, align 4, addrspace(5)
20
20
// CHECK-NEXT: [[LV2:%.*]] = alloca i32, align 4, addrspace(5)
21
21
// CHECK-NEXT: [[LA:%.*]] = alloca [100 x i32], align 4, addrspace(5)
22
- // CHECK-NEXT: [[LP1:%.*]] = alloca i32* , align 8, addrspace(5)
23
- // CHECK-NEXT: [[LP2:%.*]] = alloca i32* , align 8, addrspace(5)
22
+ // CHECK-NEXT: [[LP1:%.*]] = alloca ptr , align 8, addrspace(5)
23
+ // CHECK-NEXT: [[LP2:%.*]] = alloca ptr , align 8, addrspace(5)
24
24
// CHECK-NEXT: [[LVC:%.*]] = alloca i32, align 4, addrspace(5)
25
- // CHECK-NEXT: [[LV1_ASCAST:%.*]] = addrspacecast i32 addrspace(5)* [[LV1]] to i32*
26
- // CHECK-NEXT: [[LV2_ASCAST:%.*]] = addrspacecast i32 addrspace(5)* [[LV2]] to i32*
27
- // CHECK-NEXT: [[LA_ASCAST:%.*]] = addrspacecast [100 x i32] addrspace(5)* [[LA]] to [100 x i32]*
28
- // CHECK-NEXT: [[LP1_ASCAST:%.*]] = addrspacecast i32* addrspace(5)* [[LP1]] to i32**
29
- // CHECK-NEXT: [[LP2_ASCAST:%.*]] = addrspacecast i32* addrspace(5)* [[LP2]] to i32**
30
- // CHECK-NEXT: [[LVC_ASCAST:%.*]] = addrspacecast i32 addrspace(5)* [[LVC]] to i32*
31
- // CHECK-NEXT: store i32 1, i32* [[LV1_ASCAST]], align 4
32
- // CHECK-NEXT: store i32 2, i32* [[LV2_ASCAST]], align 4
33
- // CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [100 x i32], [100 x i32]* [[LA_ASCAST]], i64 0, i64 0
34
- // CHECK-NEXT: store i32 3, i32* [[ARRAYIDX]], align 4
35
- // CHECK-NEXT: store i32* [[LV1_ASCAST]], i32** [[LP1_ASCAST]], align 8
36
- // CHECK-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [100 x i32], [100 x i32]* [[LA_ASCAST]], i64 0, i64 0
37
- // CHECK-NEXT: store i32* [[ARRAYDECAY]], i32** [[LP2_ASCAST]], align 8
38
- // CHECK-NEXT: call void @_Z5func1Pi(i32* noundef [[LV1_ASCAST]])
39
- // CHECK-NEXT: store i32 4, i32* [[LVC_ASCAST]], align 4
40
- // CHECK-NEXT: store i32 4, i32* [[LV1_ASCAST]], align 4
25
+ // CHECK-NEXT: [[LV1_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[LV1]] to ptr
26
+ // CHECK-NEXT: [[LV2_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[LV2]] to ptr
27
+ // CHECK-NEXT: [[LA_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[LA]] to ptr
28
+ // CHECK-NEXT: [[LP1_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[LP1]] to ptr
29
+ // CHECK-NEXT: [[LP2_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[LP2]] to ptr
30
+ // CHECK-NEXT: [[LVC_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[LVC]] to ptr
31
+ // CHECK-NEXT: store i32 1, ptr [[LV1_ASCAST]], align 4
32
+ // CHECK-NEXT: store i32 2, ptr [[LV2_ASCAST]], align 4
33
+ // CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [100 x i32], ptr [[LA_ASCAST]], i64 0, i64 0
34
+ // CHECK-NEXT: store i32 3, ptr [[ARRAYIDX]], align 4
35
+ // CHECK-NEXT: store ptr [[LV1_ASCAST]], ptr [[LP1_ASCAST]], align 8
36
+ // CHECK-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [100 x i32], ptr [[LA_ASCAST]], i64 0, i64 0
37
+ // CHECK-NEXT: store ptr [[ARRAYDECAY]], ptr [[LP2_ASCAST]], align 8
38
+ // CHECK-NEXT: call void @_Z5func1Pi(ptr noundef [[LV1_ASCAST]])
39
+ // CHECK-NEXT: store i32 4, ptr [[LVC_ASCAST]], align 4
40
+ // CHECK-NEXT: store i32 4, ptr [[LV1_ASCAST]], align 4
41
41
// CHECK-NEXT: ret void
42
42
//
43
43
void func2 (void ) {
73
73
// CHECK-LABEL: @_Z5func3v(
74
74
// CHECK-NEXT: entry:
75
75
// CHECK-NEXT: [[A:%.*]] = alloca [[CLASS_A:%.*]], align 4, addrspace(5)
76
- // CHECK-NEXT: [[A_ASCAST:%.*]] = addrspacecast [[CLASS_A]] addrspace(5)* [[A]] to %class.A*
77
- // CHECK-NEXT: call void @_ZN1AC1Ev(%class.A* noundef nonnull align 4 dereferenceable(4) [[A_ASCAST]])
78
- // CHECK-NEXT: call void @_ZN1AD1Ev(%class.A* noundef nonnull align 4 dereferenceable(4) [[A_ASCAST]])
76
+ // CHECK-NEXT: [[A_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[A]] to ptr
77
+ // CHECK-NEXT: call void @_ZN1AC1Ev(ptr noundef nonnull align 4 dereferenceable(4) [[A_ASCAST]])
78
+ // CHECK-NEXT: call void @_ZN1AD1Ev(ptr noundef nonnull align 4 dereferenceable(4) [[A_ASCAST]])
79
79
// CHECK-NEXT: ret void
80
80
//
81
81
void func3 () {
@@ -85,9 +85,9 @@ void func3() {
85
85
// CHECK-LABEL: @_Z5func4i(
86
86
// CHECK-NEXT: entry:
87
87
// CHECK-NEXT: [[X_ADDR:%.*]] = alloca i32, align 4, addrspace(5)
88
- // CHECK-NEXT: [[X_ADDR_ASCAST:%.*]] = addrspacecast i32 addrspace(5)* [[X_ADDR]] to i32*
89
- // CHECK-NEXT: store i32 [[X:%.*]], i32* [[X_ADDR_ASCAST]], align 4
90
- // CHECK-NEXT: call void @_Z5func1Pi(i32* noundef [[X_ADDR_ASCAST]])
88
+ // CHECK-NEXT: [[X_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X_ADDR]] to ptr
89
+ // CHECK-NEXT: store i32 [[X:%.*]], ptr [[X_ADDR_ASCAST]], align 4
90
+ // CHECK-NEXT: call void @_Z5func1Pi(ptr noundef [[X_ADDR_ASCAST]])
91
91
// CHECK-NEXT: ret void
92
92
//
93
93
void func4 (int x) {
@@ -97,7 +97,7 @@ void func4(int x) {
97
97
// CHECK-LABEL: @_Z5func5v(
98
98
// CHECK-NEXT: entry:
99
99
// CHECK-NEXT: [[X:%.*]] = alloca i32, align 4, addrspace(5)
100
- // CHECK-NEXT: [[X_ASCAST:%.*]] = addrspacecast i32 addrspace(5)* [[X]] to i32*
100
+ // CHECK-NEXT: [[X_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X]] to ptr
101
101
// CHECK-NEXT: ret void
102
102
//
103
103
void func5 () {
@@ -108,7 +108,7 @@ void func5() {
108
108
// CHECK-LABEL: @_Z5func6v(
109
109
// CHECK-NEXT: entry:
110
110
// CHECK-NEXT: [[X:%.*]] = alloca i32, align 4, addrspace(5)
111
- // CHECK-NEXT: [[X_ASCAST:%.*]] = addrspacecast i32 addrspace(5)* [[X]] to i32*
111
+ // CHECK-NEXT: [[X_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X]] to ptr
112
112
// CHECK-NEXT: ret void
113
113
//
114
114
void func6 () {
@@ -120,10 +120,10 @@ extern void use(int *);
120
120
// CHECK-LABEL: @_Z5func7v(
121
121
// CHECK-NEXT: entry:
122
122
// CHECK-NEXT: [[X:%.*]] = alloca i32, align 4, addrspace(5)
123
- // CHECK-NEXT: [[X_ASCAST:%.*]] = addrspacecast i32 addrspace(5)* [[X]] to i32*
123
+ // CHECK-NEXT: [[X_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X]] to ptr
124
124
// CHECK-NEXT: br label [[LATER:%.*]]
125
125
// CHECK: later:
126
- // CHECK-NEXT: call void @_Z3usePi(i32* noundef [[X_ASCAST]])
126
+ // CHECK-NEXT: call void @_Z3usePi(ptr noundef [[X_ASCAST]])
127
127
// CHECK-NEXT: ret void
128
128
//
129
129
void func7 () {
0 commit comments