Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision 1db21619127c2047acc4bad02dd9a5234cf88d00)
+++ src/CodeGen/CodeGenerator.cc	(revision 7f5566b3fe2cd28774da6eb330d767776dd50ea4)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Jul 15 14:47:42 2015
-// Update Count     : 177
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Jul 27 14:40:06 2015
+// Update Count     : 218
 //
 
@@ -52,13 +52,13 @@
 	}
 
-	CodeGenerator::CodeGenerator( std::ostream &os ) : indent(*this), cur_indent( 0 ), insideFunction( false ), output( os ) { }
+	CodeGenerator::CodeGenerator( std::ostream &os ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ) { }
 
 	CodeGenerator::CodeGenerator( std::ostream &os, std::string init, int indentation, bool infunp )
-			: indent(*this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
+			: indent( *this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
 		//output << std::string( init );
 	}
 
 	CodeGenerator::CodeGenerator( std::ostream &os, char *init, int indentation, bool infunp )
-			: indent(*this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
+			: indent( *this ), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
 		//output << std::string( init );
 	}
@@ -91,5 +91,5 @@
 		// acceptAll( functionDecl->get_oldDecls(), *this );
 		if ( functionDecl->get_statements() ) {
-			functionDecl->get_statements()->accept(*this );
+			functionDecl->get_statements()->accept( *this );
 		} // if
 	}
@@ -121,5 +121,5 @@
 			for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
 				output << indent; 
-				(*i)->accept(*this );
+				(*i)->accept( *this );
 				output << ";" << endl;
 			}
@@ -159,5 +159,5 @@
 				if ( obj->get_init() ) {
 					output << " = ";
-					obj->get_init()->accept(*this );
+					obj->get_init()->accept( *this );
 				} // if
 				output << "," << endl;
@@ -450,4 +450,16 @@
 	void CodeGenerator::visit( TypeExpr *typeExpr ) {}
 
+	void CodeGenerator::visit( AsmExpr *asmExpr ) {
+		if ( asmExpr->get_inout() ) {
+			output << "[ ";
+			asmExpr->get_inout()->accept( *this );
+			output << " ] ";
+		} // if
+		asmExpr->get_constraint()->accept( *this );
+		output << " ( ";
+		asmExpr->get_operand()->accept( *this );
+		output << " )";
+	}
+
 	//*** Statements
 	void CodeGenerator::visit( CompoundStmt *compoundStmt ) {
@@ -457,7 +469,7 @@
 		cur_indent += CodeGenerator::tabsize;
 
-		for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++) {
+		for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++ ) {
 			output << indent << printLabels( (*i)->get_labels() );
-			(*i)->accept(*this );
+			(*i)->accept( *this );
 
 			output << endl;
@@ -483,21 +495,44 @@
 	}
 
+	void CodeGenerator::visit( AsmStmt *asmStmt ) {
+		output << "asm ";
+		if ( asmStmt->get_voltile() ) output << "volatile ";
+		if ( ! asmStmt->get_gotolabels().empty()  ) output << "goto ";
+		output << "( ";
+		if ( asmStmt->get_instruction() ) asmStmt->get_instruction()->accept( *this );
+		output << " : ";
+		genCommaList( asmStmt->get_output().begin(), asmStmt->get_output().end() );
+		output << " : ";
+		genCommaList( asmStmt->get_input().begin(), asmStmt->get_input().end() );
+		output << " : ";
+		genCommaList( asmStmt->get_clobber().begin(), asmStmt->get_clobber().end() );
+		if ( ! asmStmt->get_gotolabels().empty() ) {
+			output << " : ";
+			for ( std::list<Label>::iterator begin = asmStmt->get_gotolabels().begin();; ) {
+				output << *begin++;
+				if ( begin == asmStmt->get_gotolabels().end() ) break;
+				output << ", ";
+			} // for
+		} // if
+		output << " );" ;
+	}
+
 	void CodeGenerator::visit( IfStmt *ifStmt ) {
-		output << "if (";
-		ifStmt->get_condition()->accept(*this );
-		output << ") ";
-
-		ifStmt->get_thenPart()->accept(*this );
+		output << "if ( ";
+		ifStmt->get_condition()->accept( *this );
+		output << " ) ";
+
+		ifStmt->get_thenPart()->accept( *this );
 
 		if ( ifStmt->get_elsePart() != 0) {
 			output << " else ";
-			ifStmt->get_elsePart()->accept(*this );
+			ifStmt->get_elsePart()->accept( *this );
 		} // if
 	}
 
 	void CodeGenerator::visit( SwitchStmt *switchStmt ) {
-		output << "switch (" ;
-		switchStmt->get_condition()->accept(*this );
-		output << ") ";
+		output << "switch ( " ;
+		switchStmt->get_condition()->accept( *this );
+		output << " ) ";
 		
 		output << "{" << std::endl;
@@ -517,5 +552,5 @@
 		} else {
 			output << "case ";
-			caseStmt->get_condition()->accept(*this );
+			caseStmt->get_condition()->accept( *this );
 		} // if
 		output << ":\n";
@@ -526,5 +561,5 @@
 		for ( std::list<Statement *>::iterator i = sts.begin(); i != sts.end();  i++) {
 			output << indent << printLabels( (*i)->get_labels() )  ;
-			(*i)->accept(*this );
+			(*i)->accept( *this );
 			output << endl;
 		}
@@ -570,5 +605,5 @@
 		else {
 			output << "while (" ;
-			whileStmt->get_condition()->accept(*this );
+			whileStmt->get_condition()->accept( *this );
 			output << ")";
 		} // if
@@ -582,5 +617,5 @@
 		if ( whileStmt->get_isDoWhile() ) {
 			output << " while (" ;
-			whileStmt->get_condition()->accept(*this );
+			whileStmt->get_condition()->accept( *this );
 			output << ");";
 		} // if
Index: src/CodeGen/CodeGenerator.h
===================================================================
--- src/CodeGen/CodeGenerator.h	(revision 1db21619127c2047acc4bad02dd9a5234cf88d00)
+++ src/CodeGen/CodeGenerator.h	(revision 7f5566b3fe2cd28774da6eb330d767776dd50ea4)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Thu Jun 11 13:24:23 2015
-// Update Count     : 23
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Jul 24 13:34:47 2015
+// Update Count     : 25
 //
 
@@ -65,8 +65,10 @@
 		virtual void visit( TupleExpr *tupleExpr );
 		virtual void visit( TypeExpr *typeExpr );
+		virtual void visit( AsmExpr * );
 
 		//*** Statements
 		virtual void visit( CompoundStmt * );
 		virtual void visit( ExprStmt * );
+		virtual void visit( AsmStmt * );
 		virtual void visit( IfStmt * );
 		virtual void visit( SwitchStmt * );
