|
1 | 1 | // RUN: DISABLE_INFER_AS=1 %clang_cc1 -triple spir64-unknown-linux-sycldevice -std=c++11 -fsycl-is-device -disable-llvm-passes -emit-llvm -x c++ %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-LEGACY
|
2 | 2 | // RUN: %clang_cc1 -triple spir64-unknown-linux-sycldevice -std=c++11 -fsycl-is-device -disable-llvm-passes -emit-llvm -x c++ %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-NEW
|
3 | 3 |
|
| 4 | +struct SpaceWaster { |
| 5 | + int i, j; |
| 6 | +}; |
| 7 | + |
| 8 | +struct HasX { |
| 9 | + int x; |
| 10 | +}; |
| 11 | + |
| 12 | +struct Y : SpaceWaster, HasX {}; |
| 13 | + |
| 14 | +void bar(HasX &hx); |
| 15 | + |
| 16 | +void baz(Y &y) { |
| 17 | + bar(y); |
| 18 | +} |
| 19 | + |
4 | 20 | void test() {
|
5 | 21 | static const int foo = 0x42;
|
6 | 22 | // CHECK-LEGACY: @_ZZ4testvE3foo = internal constant i32 66, align 4
|
@@ -88,6 +104,19 @@ void test() {
|
88 | 104 | (void)select_str_trivial2;
|
89 | 105 | // CHECK-LEGACY: store i8* getelementptr inbounds ([21 x i8], [21 x i8]* @{{.*}}, i64 0, i64 0), i8** %{{.*}}
|
90 | 106 | // CHECK-NEW: store i8 addrspace(4)* addrspacecast (i8* getelementptr inbounds ([21 x i8], [21 x i8]* @{{.*}}, i64 0, i64 0) to i8 addrspace(4)*), i8 addrspace(4)** %{{.*}}
|
| 107 | + // |
| 108 | + // |
| 109 | + Y yy; |
| 110 | + baz(yy); |
| 111 | + // CHECK: define spir_func void @{{.*}}baz{{.*}} |
| 112 | + // CHECK-LEGACY: %[[FIRST:[a-zA-Z0-9]+]] = bitcast %struct.{{.*}}.Y* %{{.*}} to i8* |
| 113 | + // CHECK-LEGACY: %[[OFFSET:[a-zA-Z0-9]+]].ptr = getelementptr inbounds i8, i8* %[[FIRST]], i64 8 |
| 114 | + // CHECK-LEGACY: %[[SECOND:[a-zA-Z0-9]+]] = bitcast i8* %[[OFFSET]].ptr to %struct.{{.*}}.HasX* |
| 115 | + // CHECK-LEGACY: call spir_func void @{{.*}}bar{{.*}}(%struct.{{.*}}.HasX* dereferenceable(4) %[[SECOND]]) |
| 116 | + // CHECK-NEW: %[[FIRST:[a-zA-Z0-9]+]] = bitcast %struct.{{.*}}.Y addrspace(4)* %{{.*}} to i8 addrspace(4)* |
| 117 | + // CHECK-NEW: %[[OFFSET:[a-zA-Z0-9]+]].ptr = getelementptr inbounds i8, i8 addrspace(4)* %[[FIRST]], i64 8 |
| 118 | + // CHECK-NEW: %[[SECOND:[a-zA-Z0-9]+]] = bitcast i8 addrspace(4)* %[[OFFSET]].ptr to %struct.{{.*}}.HasX addrspace(4)* |
| 119 | + // CHECK-NEW: call spir_func void @{{.*}}bar{{.*}}(%struct.{{.*}}.HasX addrspace(4)* dereferenceable(4) %[[SECOND]]) |
91 | 120 | }
|
92 | 121 |
|
93 | 122 |
|
|
0 commit comments