Index: tests/ctrl-flow/.expect/break-misc.txt
===================================================================
--- tests/ctrl-flow/.expect/break-misc.txt	(revision c248b39bb4692247b9aeda9dc3201a9132c577c5)
+++ tests/ctrl-flow/.expect/break-misc.txt	(revision c248b39bb4692247b9aeda9dc3201a9132c577c5)
@@ -0,0 +1,4 @@
+if end
+block end
+
+unlabelled loop end
Index: tests/ctrl-flow/break-misc.cfa
===================================================================
--- tests/ctrl-flow/break-misc.cfa	(revision c248b39bb4692247b9aeda9dc3201a9132c577c5)
+++ tests/ctrl-flow/break-misc.cfa	(revision c248b39bb4692247b9aeda9dc3201a9132c577c5)
@@ -0,0 +1,41 @@
+// Test breaking to unusual (non-loop, non-switch) statements.
+
+#include <fstream.hfa>
+
+void breakTargetLabels() {
+	sout | "if";
+	Lif: if ( true ) {
+		break Lif;
+		sout | "!";
+	}
+	sout | "end" | nl;
+
+	sout | "block";
+	Lblock: {
+		break Lblock;
+		sout | "!";
+	}
+	sout | "end" | nl;
+}
+
+void breakSkipsUnlabelled() {
+	sout | "unlabelled";
+	for (int i = 0 ; i < 2 ; ++i) {
+		sout | "loop";
+		block: {
+			break;
+			sout | "!";
+			// Prevent unused label warning.
+			if ( false ) break block;
+		}
+	}
+	sout | "end" | nl;
+}
+
+int main() {
+	sout | nlOff;
+
+	breakTargetLabels();
+	sout | nl;
+	breakSkipsUnlabelled();
+}
