Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision c0aa3360803b4a312708b494a8067a91f03e9e8f)
+++ src/CodeGen/CodeGenerator.cc	(revision 52c14b38a7806747cf75c7dbf3ad4e40b240a03f)
@@ -89,5 +89,5 @@
 	}
 
-	CodeGenerator::CodeGenerator( std::ostream & os, bool mangle ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ), printLabels( *this ), mangle( mangle ) {}
+	CodeGenerator::CodeGenerator( std::ostream & os, bool pretty ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ), printLabels( *this ), pretty( pretty ) {}
 
 	CodeGenerator::CodeGenerator( std::ostream & os, std::string init, int indentation, bool infunp )
@@ -102,5 +102,5 @@
 
 	string CodeGenerator::mangleName( DeclarationWithType * decl ) {
-		if ( ! mangle ) return decl->get_name();
+		if ( pretty ) return decl->get_name();
 		if ( decl->get_mangleName() != "" ) {
 			// need to incorporate scope level in order to differentiate names for destructors
@@ -140,5 +140,5 @@
 			output << "_Noreturn ";
 		} // if
-		output << genType( functionDecl->get_functionType(), mangleName( functionDecl ) );
+		output << genType( functionDecl->get_functionType(), mangleName( functionDecl ), pretty );
 
 		// how to get this to the Functype?
@@ -161,5 +161,5 @@
 
 		handleStorageClass( objectDecl );
-		output << genType( objectDecl->get_type(), mangleName( objectDecl ) );
+		output << genType( objectDecl->get_type(), mangleName( objectDecl ), pretty );
 
 		asmName( objectDecl );
@@ -178,5 +178,5 @@
 	void CodeGenerator::handleAggregate( AggregateDecl * aggDecl ) {
 		genAttributes( aggDecl->get_attributes() );
-		
+
 		if ( aggDecl->get_name() != "" )
 			output << aggDecl->get_name();
@@ -249,5 +249,5 @@
 		assert( false && "Typedefs are removed and substituted in earlier passes." );
 		//output << "typedef ";
-		//output << genType( typeDecl->get_base(), typeDecl->get_name() );
+		//output << genType( typeDecl->get_base(), typeDecl->get_name(), pretty );
 	}
 
@@ -258,5 +258,5 @@
 		output << "extern unsigned long " << typeDecl->get_name();
 		if ( typeDecl->get_base() ) {
-			output << " = sizeof( " << genType( typeDecl->get_base(), "" ) << " )";
+			output << " = sizeof( " << genType( typeDecl->get_base(), "", pretty ) << " )";
 		} // if
 	}
@@ -552,5 +552,5 @@
 			// at least one result type of cast, but not an lvalue
 			output << "(";
-			output << genType( castExpr->get_result(), "" );
+			output << genType( castExpr->get_result(), "", pretty );
 			output << ")";
 		} else {
@@ -592,5 +592,5 @@
 		output << "sizeof(";
 		if ( sizeofExpr->get_isType() ) {
-			output << genType( sizeofExpr->get_type(), "" );
+			output << genType( sizeofExpr->get_type(), "", pretty );
 		} else {
 			sizeofExpr->get_expr()->accept( *this );
@@ -604,5 +604,5 @@
 		output << "__alignof__(";
 		if ( alignofExpr->get_isType() ) {
-			output << genType( alignofExpr->get_type(), "" );
+			output << genType( alignofExpr->get_type(), "", pretty );
 		} else {
 			alignofExpr->get_expr()->accept( *this );
@@ -618,5 +618,5 @@
 		// use GCC builtin
 		output << "__builtin_offsetof(";
-		output << genType( offsetofExpr->get_type(), "" );
+		output << genType( offsetofExpr->get_type(), "", pretty );
 		output << ", " << mangleName( offsetofExpr->get_member() );
 		output << ")";
@@ -680,5 +680,5 @@
 	void CodeGenerator::visit( CompoundLiteralExpr *compLitExpr ) {
 		assert( compLitExpr->get_type() && dynamic_cast< ListInit * > ( compLitExpr->get_initializer() ) );
-		output << "(" << genType( compLitExpr->get_type(), "" ) << ")";
+		output << "(" << genType( compLitExpr->get_type(), "", pretty ) << ")";
 		compLitExpr->get_initializer()->accept( *this );
 	}
Index: src/CodeGen/CodeGenerator.h
===================================================================
--- src/CodeGen/CodeGenerator.h	(revision c0aa3360803b4a312708b494a8067a91f03e9e8f)
+++ src/CodeGen/CodeGenerator.h	(revision 52c14b38a7806747cf75c7dbf3ad4e40b240a03f)
@@ -30,5 +30,5 @@
 		static int tabsize;
 
-		CodeGenerator( std::ostream &os, bool mangle = true );
+		CodeGenerator( std::ostream &os, bool pretty = false );
 		CodeGenerator( std::ostream &os, std::string, int indent = 0, bool infun = false );
 		CodeGenerator( std::ostream &os, char *, int indent = 0, bool infun = false );
@@ -119,5 +119,5 @@
 		std::ostream &output;
 		LabelPrinter printLabels;
-		bool mangle = true;
+		bool pretty = false;  // pretty print
 
 		void printDesignators( std::list< Expression * > & );
Index: src/CodeGen/GenType.cc
===================================================================
--- src/CodeGen/GenType.cc	(revision c0aa3360803b4a312708b494a8067a91f03e9e8f)
+++ src/CodeGen/GenType.cc	(revision 52c14b38a7806747cf75c7dbf3ad4e40b240a03f)
@@ -28,5 +28,5 @@
 	class GenType : public Visitor {
 	  public:
-		GenType( const std::string &typeString, bool mangle = true );
+		GenType( const std::string &typeString, bool pretty = false );
 		std::string get_typeString() const { return typeString; }
 		void set_typeString( const std::string &newValue ) { typeString = newValue; }
@@ -51,13 +51,13 @@
 
 		std::string typeString;
-		bool mangle = true;
+		bool pretty = false; // pretty print
 	};
 
-	std::string genType( Type *type, const std::string &baseString, bool mangle ) {
-		GenType gt( baseString, mangle );
-		std::ostringstream os;
-		
+	std::string genType( Type *type, const std::string &baseString, bool pretty ) {
+		GenType gt( baseString, pretty );
+		std::ostringstream os;
+
 		if ( ! type->get_attributes().empty() ) {
-			CodeGenerator cg( os, mangle );
+			CodeGenerator cg( os, pretty );
 			cg.genAttributes( type->get_attributes() );
 		} // if
@@ -67,5 +67,9 @@
 	}
 
-	GenType::GenType( const std::string &typeString, bool mangle ) : typeString( typeString ), mangle( mangle ) {}
+  std::string genPrettyType( Type * type, const std::string & baseString ) {
+  	return genType( type, baseString, true );
+  }
+
+	GenType::GenType( const std::string &typeString, bool pretty ) : typeString( typeString ), pretty( pretty ) {}
 
 	void GenType::visit( VoidType *voidType ) {
@@ -108,5 +112,5 @@
 		} // if
 		if ( dimension != 0 ) {
-			CodeGenerator cg( os, mangle );
+			CodeGenerator cg( os, pretty );
 			dimension->accept( cg );
 		} else if ( isVarLen ) {
@@ -162,5 +166,5 @@
 			} // if
 		} else {
-			CodeGenerator cg( os, mangle );
+			CodeGenerator cg( os, pretty );
 			os << "(" ;
 
@@ -203,6 +207,15 @@
 
 	void GenType::visit( TupleType * tupleType ) {
-		assertf( ! mangle, "Tuple types should not make it to Code Gen." );
+		assertf( pretty, "Tuple types should not make it to Code Gen." );
 		Visitor::visit( tupleType );
+		unsigned int i = 0;
+		std::ostringstream os;
+		os << "[";
+		for ( Type * t : *tupleType ) {
+			i++;
+			os << genType( t, "", pretty ) << (i == tupleType->size() ? "" : ", ");
+		}
+		os << "]";
+		typeString = os.str() + typeString;
 	}
 
@@ -214,5 +227,5 @@
 	void GenType::visit( ZeroType *zeroType ) {
 		// ideally these wouldn't hit codegen at all, but should be safe to make them ints
-		typeString = "long int " + typeString;
+		typeString = (pretty ? "zero_t " : "long int ") + typeString;
 		handleQualifiers( zeroType );
 	}
@@ -220,5 +233,5 @@
 	void GenType::visit( OneType *oneType ) {
 		// ideally these wouldn't hit codegen at all, but should be safe to make them ints
-		typeString = "long int " + typeString;
+		typeString = (pretty ? "one_t " : "long int ") + typeString;
 		handleQualifiers( oneType );
 	}
Index: src/CodeGen/GenType.h
===================================================================
--- src/CodeGen/GenType.h	(revision c0aa3360803b4a312708b494a8067a91f03e9e8f)
+++ src/CodeGen/GenType.h	(revision 52c14b38a7806747cf75c7dbf3ad4e40b240a03f)
@@ -21,5 +21,6 @@
 
 namespace CodeGen {
-	std::string genType( Type *type, const std::string &baseString, bool mangle = true );
+	std::string genType( Type *type, const std::string &baseString, bool pretty = false );
+  std::string genPrettyType( Type * type, const std::string & baseString );
 } // namespace CodeGen
 
Index: src/CodeGen/Generate.cc
===================================================================
--- src/CodeGen/Generate.cc	(revision c0aa3360803b4a312708b494a8067a91f03e9e8f)
+++ src/CodeGen/Generate.cc	(revision 52c14b38a7806747cf75c7dbf3ad4e40b240a03f)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// Generate.cc -- 
+// Generate.cc --
 //
 // Author           : Richard C. Bilson
@@ -26,6 +26,6 @@
 
 namespace CodeGen {
-	void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics ) {
-		CodeGen::CodeGenerator cgv( os );
+	void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics, bool pretty ) {
+		CodeGen::CodeGenerator cgv( os, pretty );
 
 		for ( std::list<Declaration *>::iterator i = translationUnit.begin(); i != translationUnit.end();  i++ ) {
Index: src/CodeGen/Generate.h
===================================================================
--- src/CodeGen/Generate.h	(revision c0aa3360803b4a312708b494a8067a91f03e9e8f)
+++ src/CodeGen/Generate.h	(revision 52c14b38a7806747cf75c7dbf3ad4e40b240a03f)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// Generate.h -- 
+// Generate.h --
 //
 // Author           : Richard C. Bilson
@@ -24,5 +24,5 @@
 namespace CodeGen {
 	/// Generates code
-	void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics );
+	void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics, bool pretty );
 } // namespace CodeGen
 
