commit 4ec218b3c3bd1ee6738597225494dd0c2da7001c
Author:     Quentin Rameau <quinq@fifth.space>
AuthorDate: Sat Jan 14 18:43:00 2017 +0100
Commit:     Quentin Rameau <quinq@fifth.space>
CommitDate: Sat Jan 14 18:43:00 2017 +0100

    [cc1] fix continue statement within while loop

diff --git a/cc1/stmt.c b/cc1/stmt.c
index 5b59e75..5f02531 100644
--- a/cc1/stmt.c
+++ b/cc1/stmt.c
@@ -69,24 +69,27 @@ condition(void)
 static void
 While(Symbol *lbreak, Symbol *lcont, Switch *lswitch)
 {
-       Symbol *begin, *cond, *end;
+       Symbol *begin;
        Node *np;
 
        begin = newlabel();
-       end = newlabel();
-       cond = newlabel();
+       lcont = newlabel();
+       lbreak = newlabel();
 
        expect(WHILE);
        np = condition();
-       emit(OJUMP, cond);
+
+       emit(OJUMP, lcont);
+
        emit(OBLOOP, NULL);
        emit(OLABEL, begin);
-       stmt(end, begin, lswitch);
-       emit(OLABEL, cond);
+       stmt(lbreak, lcont, lswitch);
+       emit(OLABEL, lcont);
        emit(OBRANCH, begin);
        emit(OEXPR, np);
        emit(OELOOP, NULL);
-       emit(OLABEL, end);
+
+       emit(OLABEL, lbreak);
 }
 
 static void

Reply via email to