Index: tests/ctrl-flow/.expect/loop_else.txt
===================================================================
--- tests/ctrl-flow/.expect/loop_else.txt	(revision b2ca052c6b66e015e17293b4e6096ade2df2985d)
+++ tests/ctrl-flow/.expect/loop_else.txt	(revision f90c0920756cac2d2feb8494689e1921763aba87)
@@ -63,2 +63,3 @@
 (10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)(0 0)else
 
+before begin else after
Index: tests/ctrl-flow/loop_else.cfa
===================================================================
--- tests/ctrl-flow/loop_else.cfa	(revision b2ca052c6b66e015e17293b4e6096ade2df2985d)
+++ tests/ctrl-flow/loop_else.cfa	(revision f90c0920756cac2d2feb8494689e1921763aba87)
@@ -74,5 +74,5 @@
 		i -= 1.7;
 	} else { sout | "else"; }														sout | nl | nl;
-	
+
 	enum { N = 10 };
 	for ( N ) { sout | "N"; } else { sout | "else"; }							sout | nl;
@@ -109,4 +109,19 @@
 	for ( s; (S){0} -~  (S){10,10} ~ (S){1} ) { sout | s; } else { sout | "else"; } sout | nl;
 	for ( s; (S){0} -~= (S){10,10} ) { sout | s; } else { sout | "else"; }		 sout | nl;
-	for ( s; (S){0} -~= (S){10,10} ~ (S){1} ) { sout | s; } else { sout | "else"; } sout | nl | nl;
+	for ( s; (S){0} -~= (S){10,10} ~ (S){1} ) { sout | s; } else { sout | "else"; } sout | nl;
+	sout | nl;
+
+	// A break (or a continue) in an else clause should target an outer loop.
+	sout | "before";
+	while ( true ) {
+		sout | " begin";
+		while ( false ) {
+			sout | "never";
+		} else {
+			sout | " else";
+			break;
+		}
+		sout | " end";
+	}
+	sout | " after" | nl;
 }
