@@ -343,13 +343,13 @@ func.func @expression_with_subscript_user(%arg0: !emitc.ptr<!emitc.opaque<"void"
343343 return %res_load : i32
344344}
345345
346- // CPP-DEFAULT: bool expression_with_load (int32_t [[VAL_1:v.+]], int32_t [[VAL_2:v.+]], int32_t* [[VAL_3:v.+]]) {
346+ // CPP-DEFAULT: bool expression_with_var_load_and_subscript (int32_t [[VAL_1:v.+]], int32_t [[VAL_2:v.+]], int32_t* [[VAL_3:v.+]]) {
347347// CPP-DEFAULT-NEXT: int64_t [[VAL_4:v.+]] = 0;
348348// CPP-DEFAULT-NEXT: int32_t [[VAL_5:v.+]] = 42;
349349// CPP-DEFAULT-NEXT: bool [[VAL_6:v.+]] = [[VAL_5]] + [[VAL_2]] < [[VAL_3]][[[VAL_4]]] + [[VAL_1]];
350350// CPP-DEFAULT-NEXT: return [[VAL_6]];
351351
352- // CPP-DECLTOP: bool expression_with_load (int32_t [[VAL_1:v.+]], int32_t [[VAL_2:v.+]], int32_t* [[VAL_3:v.+]]) {
352+ // CPP-DECLTOP: bool expression_with_var_load_and_subscript (int32_t [[VAL_1:v.+]], int32_t [[VAL_2:v.+]], int32_t* [[VAL_3:v.+]]) {
353353// CPP-DECLTOP-NEXT: int64_t [[VAL_4:v.+]];
354354// CPP-DECLTOP-NEXT: int32_t [[VAL_5:v.+]];
355355// CPP-DECLTOP-NEXT: bool [[VAL_6:v.+]];
@@ -358,7 +358,7 @@ func.func @expression_with_subscript_user(%arg0: !emitc.ptr<!emitc.opaque<"void"
358358// CPP-DECLTOP-NEXT: [[VAL_6]] = [[VAL_5]] + [[VAL_2]] < [[VAL_3]][[[VAL_4]]] + [[VAL_1]];
359359// CPP-DECLTOP-NEXT: return [[VAL_6]];
360360
361- func.func @expression_with_load (%arg0: i32 , %arg1: i32 , %arg2: !emitc.ptr <i32 >) -> i1 {
361+ func.func @expression_with_var_load_and_subscript (%arg0: i32 , %arg1: i32 , %arg2: !emitc.ptr <i32 >) -> i1 {
362362 %c0 = " emitc.constant" () {value = 0 : i64 } : () -> i64
363363 %0 = " emitc.variable" () <{value = #emitc.opaque <" 42" >}> : () -> !emitc.lvalue <i32 >
364364 %ptr = emitc.subscript %arg2 [%c0 ] : (!emitc.ptr <i32 >, i64 ) -> !emitc.lvalue <i32 >
@@ -373,6 +373,26 @@ func.func @expression_with_load(%arg0: i32, %arg1: i32, %arg2: !emitc.ptr<i32>)
373373 return %result : i1
374374}
375375
376+ // CPP-DEFAULT: bool expression_with_var_load(int32_t [[VAL_1:v.+]], int32_t [[VAL_2:v.+]]) {
377+ // CPP-DEFAULT-NEXT: int32_t [[VAL_3:v.+]] = 42;
378+ // CPP-DEFAULT-NEXT: return [[VAL_3]] + [[VAL_1]] < [[VAL_2]];
379+
380+ // CPP-DECLTOP: bool expression_with_var_load(int32_t [[VAL_1:v.+]], int32_t [[VAL_2:v.+]]) {
381+ // CPP-DECLTOP-NEXT: int32_t [[VAL_3:v.+]];
382+ // CPP-DECLTOP-NEXT: [[VAL_3]] = 42;
383+ // CPP-DECLTOP-NEXT: return [[VAL_3]] + [[VAL_1]] < [[VAL_2]];
384+
385+ func.func @expression_with_var_load (%arg0: i32 , %arg1: i32 ) -> i1 {
386+ %0 = " emitc.variable" () <{value = #emitc.opaque <" 42" >}> : () -> !emitc.lvalue <i32 >
387+ %result = emitc.expression : i1 {
388+ %a = emitc.load %0 : !emitc.lvalue <i32 >
389+ %b = emitc.add %a , %arg0 : (i32 , i32 ) -> i32
390+ %d = emitc.cmp lt , %b , %arg1 :(i32 , i32 ) -> i1
391+ yield %d : i1
392+ }
393+ return %result : i1
394+ }
395+
376396// CPP-DEFAULT: bool expression_with_load_and_call(int32_t* [[VAL_1:v.+]]) {
377397// CPP-DEFAULT-NEXT: int64_t [[VAL_2:v.+]] = 0;
378398// CPP-DEFAULT-NEXT: bool [[VAL_3:v.+]] = [[VAL_1]][[[VAL_2]]] + bar([[VAL_1]][[[VAL_2]]]) < [[VAL_1]][[[VAL_2]]];
0 commit comments