| ... | ... | @@ -429,7 +429,31 @@ fn transBinaryOperator( |
| 429 | 429 | }); |
| 430 | 430 | } |
| 431 | 431 | }, |
| 432 | | .Rem, |
| 432 | .Rem => { |
| 433 | if (!cIsUnsignedInteger(qt)) { |
| 434 | // signed integer division uses @rem |
| 435 | const rem_node = try transCreateNodeBuiltinFnCall(rp.c, "@rem"); |
| 436 | const lhs = try transExpr(rp, scope, ZigClangBinaryOperator_getLHS(stmt), .used, .l_value); |
| 437 | try rem_node.params.push(lhs.node); |
| 438 | _ = try appendToken(rp.c, .Comma, ","); |
| 439 | const rhs = try transExpr(rp, scope, ZigClangBinaryOperator_getRHS(stmt), .used, .r_value); |
| 440 | try rem_node.params.push(rhs.node); |
| 441 | rem_node.rparen_token = try appendToken(rp.c, .RParen, ")"); |
| 442 | return maybeSuppressResult(rp, scope, result_used, TransResult{ |
| 443 | .node = &rem_node.base, |
| 444 | .child_scope = scope, |
| 445 | .node_scope = scope, |
| 446 | }); |
| 447 | } else { |
| 448 | // unsigned/float division uses the operator |
| 449 | const node = try transCreateNodeInfixOp(rp, scope, stmt, .Mod, .Percent, "%", true); |
| 450 | return maybeSuppressResult(rp, scope, result_used, TransResult{ |
| 451 | .node = node, |
| 452 | .child_scope = scope, |
| 453 | .node_scope = scope, |
| 454 | }); |
| 455 | } |
| 456 | }, |
| 433 | 457 | .Shl, |
| 434 | 458 | .Shr, |
| 435 | 459 | .LT, |