shithub: scc

Download patch

ref: 1770b6f83b89855a47d3457c2a1c24127d033d43
parent: 537e20492045bd44e48e57d5c664c9eccf0a5a06
author: Roberto E. Vargas Caballero <[email protected]>
date: Thu Apr 24 05:11:44 EDT 2014

Emit end label in while and for loops

This label marks the end of a loop (it is used for break statements),
but in For() and While() was not emited.

--- a/stmt.c
+++ b/stmt.c
@@ -57,6 +57,7 @@
 	emitlabel(cond);
 	emitjump(begin, np);
 	emiteloop();
+	emitlabel(end);
 }
 
 static void
@@ -85,6 +86,7 @@
 	emitlabel(cond);
 	emitjump(begin, econd);
 	emiteloop();
+	emitlabel(end);
 }
 
 static void