diff options
author | Michael Forney <mforney@mforney.org> | 2021-10-02 18:07:16 -0700 |
---|---|---|
committer | Michael Forney <mforney@mforney.org> | 2021-10-02 18:07:16 -0700 |
commit | 0dd2b051236ff1d286c0e4368862ce4f3fd3880c (patch) | |
tree | fa64bf4091e223a7ffc4bf3c77d55be3f4fc8138 /test/logical-and.qbe | |
parent | e36dc296f50cb2d60d3b27ce62217762b9655313 (diff) |
qbe: Re-add conversion to bool RHS of logical and/or
7e838669 removed conversion to bool for int expressions used only
to control jnz, but incorrectly dropped the conversion for the
right-hand-side of logical and/or as well. We need the result of
the expression to be 0 or 1, so we still need that conversion.
Diffstat (limited to 'test/logical-and.qbe')
-rw-r--r-- | test/logical-and.qbe | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/test/logical-and.qbe b/test/logical-and.qbe index 21fd79a..b827bca 100644 --- a/test/logical-and.qbe +++ b/test/logical-and.qbe @@ -5,29 +5,32 @@ function w $main() { %.1 =w loadw $i jnz %.1, @logic_right.3, @logic_join.4 @logic_right.3 + %.2 =w cnew 1, 0 @logic_join.4 - %.2 =w phi @body.2 0, @logic_right.3 1 - jnz %.2, @if_true.5, @if_false.6 + %.3 =w phi @body.2 0, @logic_right.3 %.2 + jnz %.3, @if_true.5, @if_false.6 @if_true.5 ret 1 @if_false.6 - %.3 =s loads $f - %.4 =w cnes %.3, s_0 - jnz %.4, @logic_right.7, @logic_join.8 + %.4 =s loads $f + %.5 =w cnes %.4, s_0 + jnz %.5, @logic_right.7, @logic_join.8 @logic_right.7 + %.6 =w cnew 1, 0 @logic_join.8 - %.5 =w phi @if_false.6 0, @logic_right.7 1 - jnz %.5, @if_true.9, @if_false.10 + %.7 =w phi @if_false.6 0, @logic_right.7 %.6 + jnz %.7, @if_true.9, @if_false.10 @if_true.9 ret 1 @if_false.10 - %.6 =l loadl $p - %.7 =w cnel %.6, 0 - jnz %.7, @logic_right.11, @logic_join.12 + %.8 =l loadl $p + %.9 =w cnel %.8, 0 + jnz %.9, @logic_right.11, @logic_join.12 @logic_right.11 + %.10 =w cnew 1, 0 @logic_join.12 - %.8 =w phi @if_false.10 0, @logic_right.11 1 - jnz %.8, @if_true.13, @if_false.14 + %.11 =w phi @if_false.10 0, @logic_right.11 %.10 + jnz %.11, @if_true.13, @if_false.14 @if_true.13 ret 1 @if_false.14 |