Index: src/ControlStruct/LabelFixer.cc
===================================================================
--- src/ControlStruct/LabelFixer.cc	(revision 4eb1db6706393524fc66d06a1b8e7c5014ecabd8)
+++ src/ControlStruct/LabelFixer.cc	(revision 954463b80ce9cedba9e3e742cb8891fed4543c01)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Fri May 29 15:57:12 2015
-// Update Count     : 82
+// Last Modified On : Tue Jun 02 15:30:32 2015
+// Update Count     : 93
 //
 
@@ -76,14 +76,19 @@
 		assert( llabel.size() > 0 );
 
+		Entry * e = new Entry( definition );
+
 		for ( std::list< Label >::iterator i = llabel.begin(); i != llabel.end(); i++ ) {
-			if ( labelTable.find( *i ) == labelTable.end() ) { 
+			if ( labelTable.find( *i ) == labelTable.end() ) {
+				// all labels on this statement need to use the same entry, so this should only be created once
 				// undefined and unused until now, add an entry
-				labelTable[ *i ] =  new Entry( definition ); 
-			} else if ( labelTable[ *i ]->defined() ) {\
+				labelTable[ *i ] =  e;
+			} else if ( labelTable[ *i ]->defined() ) {
 				// defined twice, error
 				throw SemanticError( "Duplicate definition of label: " + *i );
 			}	else {
-				// used previously, but undefined until now -> set its definition to this location
-				labelTable[ *i ]->set_definition( definition );
+				// used previously, but undefined until now -> link with this entry
+				Entry * oldEntry = labelTable[ *i ];
+				e->add_uses( oldEntry->get_uses() );
+				labelTable[ *i ] = e;
 			} // if
 		} // for
