@@ -66,11 +66,11 @@ func.func @do_not_inline(%arg0: i32, %arg1: i32, %arg2 : i32) -> i32 {
66
66
}
67
67
68
68
// CPP-DEFAULT: float parentheses_for_low_precedence(int32_t [[VAL_1:v[0-9]+]], int32_t [[VAL_2:v[0-9]+]], int32_t [[VAL_3:v[0-9]+]]) {
69
- // CPP-DEFAULT-NEXT: return (float) ([[VAL_1]] + [[VAL_2]] * [[VAL_3]]);
69
+ // CPP-DEFAULT-NEXT: return (( float) ([[VAL_1]] + [[VAL_2]] * [[VAL_3]]) );
70
70
// CPP-DEFAULT-NEXT: }
71
71
72
72
// CPP-DECLTOP: float parentheses_for_low_precedence(int32_t [[VAL_1:v[0-9]+]], int32_t [[VAL_2:v[0-9]+]], int32_t [[VAL_3:v[0-9]+]]) {
73
- // CPP-DECLTOP-NEXT: return (float) ([[VAL_1]] + [[VAL_2]] * [[VAL_3]]);
73
+ // CPP-DECLTOP-NEXT: return (( float) ([[VAL_1]] + [[VAL_2]] * [[VAL_3]]) );
74
74
// CPP-DECLTOP-NEXT: }
75
75
76
76
func.func @parentheses_for_low_precedence (%arg0: i32 , %arg1: i32 , %arg2: i32 ) -> f32 {
@@ -84,11 +84,11 @@ func.func @parentheses_for_low_precedence(%arg0: i32, %arg1: i32, %arg2: i32) ->
84
84
}
85
85
86
86
// CPP-DEFAULT: int32_t parentheses_for_same_precedence(int32_t [[VAL_1:v[0-9]+]], int32_t [[VAL_2:v[0-9]+]], int32_t [[VAL_3:v[0-9]+]]) {
87
- // CPP-DEFAULT-NEXT: return [[VAL_3]] / ([[VAL_1]] * [[VAL_2]]);
87
+ // CPP-DEFAULT-NEXT: return ( [[VAL_3]] / ([[VAL_1]] * [[VAL_2]]) );
88
88
// CPP-DEFAULT-NEXT: }
89
89
90
90
// CPP-DECLTOP: int32_t parentheses_for_same_precedence(int32_t [[VAL_1:v[0-9]+]], int32_t [[VAL_2:v[0-9]+]], int32_t [[VAL_3:v[0-9]+]]) {
91
- // CPP-DECLTOP-NEXT: return [[VAL_3]] / ([[VAL_1]] * [[VAL_2]]);
91
+ // CPP-DECLTOP-NEXT: return ( [[VAL_3]] / ([[VAL_1]] * [[VAL_2]]) );
92
92
// CPP-DECLTOP-NEXT: }
93
93
func.func @parentheses_for_same_precedence (%arg0: i32 , %arg1: i32 , %arg2: i32 ) -> i32 {
94
94
%e = emitc.expression : i32 {
@@ -100,6 +100,74 @@ func.func @parentheses_for_same_precedence(%arg0: i32, %arg1: i32, %arg2: i32) -
100
100
return %e : i32
101
101
}
102
102
103
+ // CPP-DEFAULT: int32_t parentheses_for_expression_users(int32_t [[VAL_1:v[0-9]+]], int32_t [[VAL_2:v[0-9]+]], int32_t [[VAL_3:v[0-9]+]]) {
104
+ // CPP-DEFAULT-NEXT: int32_t v4 = 0;
105
+ // CPP-DEFAULT-NEXT: bool v5 = (bool) ([[VAL_3]] / ([[VAL_1]] * [[VAL_2]]));
106
+ // CPP-DEFAULT-NEXT: int32_t v6 = ([[VAL_3]] / ([[VAL_1]] * [[VAL_2]])) + v4;
107
+ // CPP-DEFAULT-NEXT: int32_t v7 = bar(([[VAL_3]] / ([[VAL_1]] * [[VAL_2]])), v4);
108
+ // CPP-DEFAULT-NEXT: int32_t v8 = v5 ? ([[VAL_3]] / ([[VAL_1]] * [[VAL_2]])) : v4;
109
+ // CPP-DEFAULT-NEXT: int32_t v9;
110
+ // CPP-DEFAULT-NEXT: v9 = ([[VAL_3]] / ([[VAL_1]] * [[VAL_2]]));
111
+ // CPP-DEFAULT-NEXT: return ([[VAL_3]] / ([[VAL_1]] * [[VAL_2]]));
112
+ // CPP-DEFAULT-NEXT: }
113
+
114
+ // CPP-DECLTOP: int32_t parentheses_for_expression_users(int32_t [[VAL_1:v[0-9]+]], int32_t [[VAL_2:v[0-9]+]], int32_t [[VAL_3:v[0-9]+]]) {
115
+ // CPP-DECLTOP-NEXT: int32_t v4;
116
+ // CPP-DECLTOP-NEXT: bool v5;
117
+ // CPP-DECLTOP-NEXT: int32_t v6;
118
+ // CPP-DECLTOP-NEXT: int32_t v7;
119
+ // CPP-DECLTOP-NEXT: int32_t v8;
120
+ // CPP-DECLTOP-NEXT: int32_t v9;
121
+ // CPP-DECLTOP-NEXT: v4 = 0;
122
+ // CPP-DECLTOP-NEXT: v5 = (bool) ([[VAL_3]] / ([[VAL_1]] * [[VAL_2]]));
123
+ // CPP-DECLTOP-NEXT: v6 = ([[VAL_3]] / ([[VAL_1]] * [[VAL_2]])) + v4;
124
+ // CPP-DECLTOP-NEXT: v7 = bar(([[VAL_3]] / ([[VAL_1]] * [[VAL_2]])), v4);
125
+ // CPP-DECLTOP-NEXT: v8 = v5 ? ([[VAL_3]] / ([[VAL_1]] * [[VAL_2]])) : v4;
126
+ // CPP-DECLTOP-NEXT: ;
127
+ // CPP-DECLTOP-NEXT: v9 = ([[VAL_3]] / ([[VAL_1]] * [[VAL_2]]));
128
+ // CPP-DECLTOP-NEXT: return ([[VAL_3]] / ([[VAL_1]] * [[VAL_2]]));
129
+ // CPP-DECLTOP-NEXT: }
130
+ func.func @parentheses_for_expression_users (%arg0: i32 , %arg1: i32 , %arg2: i32 ) -> i32 {
131
+ %c0 = " emitc.constant" () {value = 0 : i32 } : () -> i32
132
+ %e0 = emitc.expression : i32 {
133
+ %0 = emitc.mul %arg0 , %arg1 : (i32 , i32 ) -> i32
134
+ %1 = emitc.div %arg2 , %0 : (i32 , i32 ) -> i32
135
+ emitc.yield %1 : i32
136
+ }
137
+ %e1 = emitc.expression : i32 {
138
+ %0 = emitc.mul %arg0 , %arg1 : (i32 , i32 ) -> i32
139
+ %1 = emitc.div %arg2 , %0 : (i32 , i32 ) -> i32
140
+ emitc.yield %1 : i32
141
+ }
142
+ %e2 = emitc.expression : i32 {
143
+ %0 = emitc.mul %arg0 , %arg1 : (i32 , i32 ) -> i32
144
+ %1 = emitc.div %arg2 , %0 : (i32 , i32 ) -> i32
145
+ emitc.yield %1 : i32
146
+ }
147
+ %e3 = emitc.expression : i32 {
148
+ %0 = emitc.mul %arg0 , %arg1 : (i32 , i32 ) -> i32
149
+ %1 = emitc.div %arg2 , %0 : (i32 , i32 ) -> i32
150
+ emitc.yield %1 : i32
151
+ }
152
+ %e4 = emitc.expression : i32 {
153
+ %0 = emitc.mul %arg0 , %arg1 : (i32 , i32 ) -> i32
154
+ %1 = emitc.div %arg2 , %0 : (i32 , i32 ) -> i32
155
+ emitc.yield %1 : i32
156
+ }
157
+ %e5 = emitc.expression : i32 {
158
+ %0 = emitc.mul %arg0 , %arg1 : (i32 , i32 ) -> i32
159
+ %1 = emitc.div %arg2 , %0 : (i32 , i32 ) -> i32
160
+ emitc.yield %1 : i32
161
+ }
162
+ %cast = emitc.cast %e0 : i32 to i1
163
+ %add = emitc.add %e1 , %c0 : (i32 , i32 ) -> i32
164
+ %call = emitc.call_opaque " bar" (%e2 , %c0 ) : (i32 , i32 ) -> (i32 )
165
+ %cond = emitc.conditional %cast , %e3 , %c0 : i32
166
+ %var = " emitc.variable" () {value = #emitc.opaque <" " >} : () -> i32
167
+ emitc.assign %e4 : i32 to %var : i32
168
+ return %e5 : i32
169
+ }
170
+
103
171
// CPP-DEFAULT: int32_t multiple_uses(int32_t [[VAL_1:v[0-9]+]], int32_t [[VAL_2:v[0-9]+]], int32_t [[VAL_3:v[0-9]+]], int32_t [[VAL_4:v[0-9]+]]) {
104
172
// CPP-DEFAULT-NEXT: bool [[VAL_5:v[0-9]+]] = bar([[VAL_1]] * [[VAL_2]], [[VAL_3]]) - [[VAL_4]] < [[VAL_2]];
105
173
// CPP-DEFAULT-NEXT: int32_t [[VAL_6:v[0-9]+]];
@@ -154,7 +222,7 @@ func.func @multiple_uses(%arg0: i32, %arg1: i32, %arg2: i32, %arg3: i32) -> i32
154
222
// CPP-DEFAULT-NEXT: int32_t [[VAL_5:v[0-9]+]] = [[VAL_3]] % [[VAL_4]];
155
223
// CPP-DEFAULT-NEXT: int32_t [[VAL_6:v[0-9]+]] = bar([[VAL_5]], [[VAL_1]] * [[VAL_2]]);
156
224
// CPP-DEFAULT-NEXT: int32_t [[VAL_7:v[0-9]+]];
157
- // CPP-DEFAULT-NEXT: if ([[VAL_6]] - [[VAL_4]] < [[VAL_2]]) {
225
+ // CPP-DEFAULT-NEXT: if (( [[VAL_6]] - [[VAL_4]] < [[VAL_2]]) ) {
158
226
// CPP-DEFAULT-NEXT: [[VAL_7]] = [[VAL_1]];
159
227
// CPP-DEFAULT-NEXT: } else {
160
228
// CPP-DEFAULT-NEXT: [[VAL_7]] = [[VAL_1]];
@@ -169,7 +237,7 @@ func.func @multiple_uses(%arg0: i32, %arg1: i32, %arg2: i32, %arg3: i32) -> i32
169
237
// CPP-DECLTOP-NEXT: [[VAL_5]] = [[VAL_3]] % [[VAL_4]];
170
238
// CPP-DECLTOP-NEXT: [[VAL_6]] = bar([[VAL_5]], [[VAL_1]] * [[VAL_2]]);
171
239
// CPP-DECLTOP-NEXT: ;
172
- // CPP-DECLTOP-NEXT: if ([[VAL_6]] - [[VAL_4]] < [[VAL_2]]) {
240
+ // CPP-DECLTOP-NEXT: if (( [[VAL_6]] - [[VAL_4]] < [[VAL_2]]) ) {
173
241
// CPP-DECLTOP-NEXT: [[VAL_7]] = [[VAL_1]];
174
242
// CPP-DECLTOP-NEXT: } else {
175
243
// CPP-DECLTOP-NEXT: [[VAL_7]] = [[VAL_1]];
@@ -205,13 +273,13 @@ func.func @different_expressions(%arg0: i32, %arg1: i32, %arg2: i32, %arg3: i32)
205
273
206
274
// CPP-DEFAULT: bool expression_with_address_taken(int32_t [[VAL_1:v[0-9]+]], int32_t [[VAL_2:v[0-9]+]], int32_t* [[VAL_3]]) {
207
275
// CPP-DEFAULT-NEXT: int32_t [[VAL_4:v[0-9]+]] = [[VAL_1]] % [[VAL_2]];
208
- // CPP-DEFAULT-NEXT: return &[[VAL_4]] - [[VAL_2]] < [[VAL_3]];
276
+ // CPP-DEFAULT-NEXT: return ( &[[VAL_4]] - [[VAL_2]] < [[VAL_3]]) ;
209
277
// CPP-DEFAULT-NEXT: }
210
278
211
279
// CPP-DECLTOP: bool expression_with_address_taken(int32_t [[VAL_1:v[0-9]+]], int32_t [[VAL_2:v[0-9]+]], int32_t* [[VAL_3]]) {
212
280
// CPP-DECLTOP-NEXT: int32_t [[VAL_4:v[0-9]+]];
213
281
// CPP-DECLTOP-NEXT: [[VAL_4]] = [[VAL_1]] % [[VAL_2]];
214
- // CPP-DECLTOP-NEXT: return &[[VAL_4]] - [[VAL_2]] < [[VAL_3]];
282
+ // CPP-DECLTOP-NEXT: return ( &[[VAL_4]] - [[VAL_2]] < [[VAL_3]]) ;
215
283
// CPP-DECLTOP-NEXT: }
216
284
217
285
func.func @expression_with_address_taken (%arg0: i32 , %arg1: i32 , %arg2: !emitc.ptr <i32 >) -> i1 {
0 commit comments