Index: src/ControlStruct/MLEMutator.cc
===================================================================
--- src/ControlStruct/MLEMutator.cc	(revision cbce2727f642c2a177c82c045248ba1923699527)
+++ src/ControlStruct/MLEMutator.cc	(revision f6cc2096d769efbc869dcf738710880abb631748)
@@ -154,4 +154,23 @@
 		return switchStmt;
 	}
+
+	void addUnused( Statement * stmt, const Label & originalTarget ) {
+		// break/continue without a label doesn't need unused attribute
+		if ( originalTarget == "" ) return;
+		// add unused attribute to the originalTarget of a labelled break/continue
+		for ( Label & l : stmt->get_labels() ) {
+			// find the label to add unused attribute to
+			if ( l == originalTarget ) {
+				for ( Attribute * attr : l.get_attributes() ) {
+					// ensure attribute isn't added twice
+					if ( attr->get_name() == "unused" ) return;
+				}
+				l.get_attributes().push_back( new Attribute( "unused" ) );
+				return;
+			}
+		}
+		assertf( false, "Could not find label '%s' on statement %s", originalTarget.get_name().c_str(), toString( stmt ).c_str() );
+	}
+
 
 	Statement *MLEMutator::mutate( BranchStmt *branchStmt ) throw ( SemanticError ) {
@@ -204,4 +223,7 @@
 		} // switch
 
+		// add unused attribute to label to silence warnings
+		addUnused( targetEntry->get_controlStructure(), branchStmt->get_originalTarget() );
+
 		// transform break/continue statements into goto to simplify later handling of branches
 		delete branchStmt;
