11// RUN: mlir-translate -mlir-to-cpp %s | FileCheck %s -check-prefix=CPP-DEFAULT
22
3- func.func @member (%arg0: !emitc.lvalue <!emitc.opaque <" mystruct" >>, %arg1: i32 ) {
4- %0 = " emitc.member" (%arg0 ) {member = " a" } : (!emitc.lvalue <!emitc.opaque <" mystruct" >>) -> !emitc.lvalue <i32 >
3+ func.func @member (%arg0: !emitc.opaque <" mystruct" >, %arg1: i32 ) {
4+ %var0 = " emitc.variable" () <{value = #emitc.opaque <" " >}> : () -> !emitc.lvalue <!emitc.opaque <" mystruct" >>
5+ emitc.assign %arg0 : !emitc.opaque <" mystruct" > to %var0 : !emitc.lvalue <!emitc.opaque <" mystruct" >>
6+
7+ %0 = " emitc.member" (%var0 ) {member = " a" } : (!emitc.lvalue <!emitc.opaque <" mystruct" >>) -> !emitc.lvalue <i32 >
58 emitc.assign %arg1 : i32 to %0 : !emitc.lvalue <i32 >
69
7- %1 = " emitc.member" (%arg0 ) {member = " b" } : (!emitc.lvalue <!emitc.opaque <" mystruct" >>) -> !emitc.lvalue <i32 >
10+ %1 = " emitc.member" (%var0 ) {member = " b" } : (!emitc.lvalue <!emitc.opaque <" mystruct" >>) -> !emitc.lvalue <i32 >
811 %2 = emitc.load %1 : !emitc.lvalue <i32 >
912 %3 = " emitc.variable" () <{value = #emitc.opaque <" " >}> : () -> !emitc.lvalue <i32 >
1013 emitc.assign %2 : i32 to %3 : !emitc.lvalue <i32 >
@@ -13,17 +16,22 @@ func.func @member(%arg0: !emitc.lvalue<!emitc.opaque<"mystruct">>, %arg1: i32) {
1316}
1417
1518// CPP-DEFAULT: void member(mystruct [[V0:[^ ]*]], int32_t [[V1:[^ ]*]]) {
16- // CPP-DEFAULT-NEXT: [[V0]].a = [[V1]];
17- // CPP-DEFAULT-NEXT: int32_t [[V2:[^ ]*]] = [[V0]].b;
18- // CPP-DEFAULT-NEXT: int32_t [[V3:[^ ]*]];
19- // CPP-DEFAULT-NEXT: [[V3]] = [[V2]];
20-
21-
22- func.func @member_of_pointer (%arg0: !emitc.lvalue <!emitc.ptr <!emitc.opaque <" mystruct" >>>, %arg1: i32 ) {
23- %0 = " emitc.member_of_ptr" (%arg0 ) {member = " a" } : (!emitc.lvalue <!emitc.ptr <!emitc.opaque <" mystruct" >>>) -> !emitc.lvalue <i32 >
19+ // CPP-DEFAULT-NEXT: mystruct [[V2:[^ ]*]];
20+ // CPP-DEFAULT-NEXT: [[V2]] = [[V0]];
21+ // CPP-DEFAULT-NEXT: [[V2]].a = [[V1]];
22+ // CPP-DEFAULT-NEXT: int32_t [[V3:[^ ]*]] = [[V2]].b;
23+ // CPP-DEFAULT-NEXT: int32_t [[V4:[^ ]*]];
24+ // CPP-DEFAULT-NEXT: [[V4]] = [[V3]];
25+
26+
27+ func.func @member_of_pointer (%arg0: !emitc.ptr <!emitc.opaque <" mystruct" >>, %arg1: i32 ) {
28+ %var0 = " emitc.variable" () <{value = #emitc.opaque <" " >}> : () -> !emitc.lvalue <!emitc.ptr <!emitc.opaque <" mystruct" >>>
29+ emitc.assign %arg0 : !emitc.ptr <!emitc.opaque <" mystruct" >> to %var0 : !emitc.lvalue <!emitc.ptr <!emitc.opaque <" mystruct" >>>
30+
31+ %0 = " emitc.member_of_ptr" (%var0 ) {member = " a" } : (!emitc.lvalue <!emitc.ptr <!emitc.opaque <" mystruct" >>>) -> !emitc.lvalue <i32 >
2432 emitc.assign %arg1 : i32 to %0 : !emitc.lvalue <i32 >
2533
26- %1 = " emitc.member_of_ptr" (%arg0 ) {member = " b" } : (!emitc.lvalue <!emitc.ptr <!emitc.opaque <" mystruct" >>>) -> !emitc.lvalue <i32 >
34+ %1 = " emitc.member_of_ptr" (%var0 ) {member = " b" } : (!emitc.lvalue <!emitc.ptr <!emitc.opaque <" mystruct" >>>) -> !emitc.lvalue <i32 >
2735 %2 = emitc.load %1 : !emitc.lvalue <i32 >
2836 %3 = " emitc.variable" () <{value = #emitc.opaque <" " >}> : () -> !emitc.lvalue <i32 >
2937 emitc.assign %2 : i32 to %3 : !emitc.lvalue <i32 >
@@ -32,8 +40,10 @@ func.func @member_of_pointer(%arg0: !emitc.lvalue<!emitc.ptr<!emitc.opaque<"myst
3240}
3341
3442// CPP-DEFAULT: void member_of_pointer(mystruct* [[V0:[^ ]*]], int32_t [[V1:[^ ]*]]) {
35- // CPP-DEFAULT-NEXT: [[V0]]->a = [[V1]];
36- // CPP-DEFAULT-NEXT: int32_t [[V2:[^ ]*]] = [[V0]]->b;
37- // CPP-DEFAULT-NEXT: int32_t [[V3:[^ ]*]];
38- // CPP-DEFAULT-NEXT: [[V3]] = [[V2]];
43+ // CPP-DEFAULT-NEXT: mystruct* [[V2:[^ ]*]];
44+ // CPP-DEFAULT-NEXT: [[V2]] = [[V0]];
45+ // CPP-DEFAULT-NEXT: [[V2]]->a = [[V1]];
46+ // CPP-DEFAULT-NEXT: int32_t [[V3:[^ ]*]] = [[V2]]->b;
47+ // CPP-DEFAULT-NEXT: int32_t [[V4:[^ ]*]];
48+ // CPP-DEFAULT-NEXT: [[V4]] = [[V3]];
3949
0 commit comments