Index: src/CodeGen/CodeGenerator.cpp
===================================================================
--- src/CodeGen/CodeGenerator.cpp	(revision 7959e56ee51966b45243fdf7c184c30462ae78f8)
+++ src/CodeGen/CodeGenerator.cpp	(revision ee229195501e7db133476406201f42f5c6b18479)
@@ -1105,15 +1105,16 @@
 		assertf( !options.genC, "fallthrough should not reach code generation." );
 		output << "fallthrough";
+		if ( ast::BranchStmt::FallThroughDefault == stmt->kind ) {
+			assertf( stmt->target.empty(), "fallthough default should not have a target." );
+			output << " default";
+		}
 		break;
 	default:
 		assertf( false, "Bad BranchStmt value." );
 	}
-	// Print branch target for labelled break/continue/fallthrough in debug mode.
-	if ( !options.genC && stmt->kind != ast::BranchStmt::Goto ) {
-		if ( !stmt->target.empty() ) {
-			output << " " << stmt->target;
-		} else if ( stmt->kind == ast::BranchStmt::FallThrough ) {
-			output << " default";
-		}
+	// Print branch target for labelled break/continue/fallthrough.
+	if ( ast::BranchStmt::Goto != stmt->kind && !stmt->target.empty() ) {
+		assertf( !options.genC, "labelled branch should not reach code generation. %s", stmt->target.name.c_str() );
+		output << " " << stmt->target;
 	}
 	output << ";";
