aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--stmt.c4
-rw-r--r--test/for-loop.qbe14
2 files changed, 9 insertions, 9 deletions
diff --git a/stmt.c b/stmt.c
index cf5209d..78798cf 100644
--- a/stmt.c
+++ b/stmt.c
@@ -220,13 +220,13 @@ stmt(struct func *f, struct scope *s)
funclabel(f, label[0]);
if (tok.kind != TSEMICOLON) {
- e = expr(s);
+ e = exprconvert(expr(s), &typebool);
v = funcexpr(f, e);
funcjnz(f, v, label[1], label[3]);
delexpr(e);
}
expect(TSEMICOLON, NULL);
- e = tok.kind == TRPAREN ? NULL : exprconvert(expr(s), &typebool);
+ e = tok.kind == TRPAREN ? NULL : expr(s);
expect(TRPAREN, NULL);
funclabel(f, label[1]);
diff --git a/test/for-loop.qbe b/test/for-loop.qbe
index 6d16cf3..588f488 100644
--- a/test/for-loop.qbe
+++ b/test/for-loop.qbe
@@ -7,15 +7,15 @@ function $f() {
@for_cond.3
%.2 =w loadsw %.1
%.3 =w csltw %.2, 10
- jnz %.3, @for_body.4, @for_join.6
+ %.4 =w cnew %.3, 0
+ jnz %.4, @for_body.4, @for_join.6
@for_body.4
- %.4 =w loadsw %.1
- call $g(w %.4)
-@for_cont.5
%.5 =w loadsw %.1
- %.6 =w add %.5, 1
- storew %.6, %.1
- %.7 =w cnew %.6, 0
+ call $g(w %.5)
+@for_cont.5
+ %.6 =w loadsw %.1
+ %.7 =w add %.6, 1
+ storew %.7, %.1
jmp @for_cond.3
@for_join.6
ret