forked from llvm/clangir
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdata-member-ptr.cir
32 lines (25 loc) · 1.12 KB
/
data-member-ptr.cir
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// RUN: cir-opt %s | cir-opt | FileCheck %s
!s32i = !cir.int<s, 32>
!ty_22Foo22 = !cir.struct<struct "Foo" {!s32i}>
module {
cir.func @null_member() {
%0 = cir.const #cir.data_member<null> : !cir.data_member<!s32i in !ty_22Foo22>
cir.return
}
cir.func @get_runtime_member(%arg0: !cir.ptr<!ty_22Foo22>) {
%0 = cir.const #cir.data_member<0> : !cir.data_member<!s32i in !ty_22Foo22>
%1 = cir.get_runtime_member %arg0[%0 : !cir.data_member<!s32i in !ty_22Foo22>] : !cir.ptr<!ty_22Foo22> -> !cir.ptr<!s32i>
cir.return
}
}
// CHECK: module {
// CHECK-NEXT: cir.func @null_member() {
// CHECK-NEXT: %0 = cir.const #cir.data_member<null> : !cir.data_member<!s32i in !ty_22Foo22>
// CHECK-NEXT: cir.return
// CHECK-NEXT: }
// CHECK-NEXT: cir.func @get_runtime_member(%arg0: !cir.ptr<!ty_22Foo22>) {
// CHECK-NEXT: %0 = cir.const #cir.data_member<0> : !cir.data_member<!s32i in !ty_22Foo22>
// CHECK-NEXT: %1 = cir.get_runtime_member %arg0[%0 : !cir.data_member<!s32i in !ty_22Foo22>] : !cir.ptr<!ty_22Foo22> -> !cir.ptr<!s32i>
// CHECK-NEXT: cir.return
// CHECK-NEXT: }
// CHECK: }