Index: src/main.cc
===================================================================
--- src/main.cc	(revision bf7b6015da57fcb865d542083eab5a8c10ea6d70)
+++ src/main.cc	(revision 53d3ab4b8d38aa63e9ee27dca21a7536b89fe058)
@@ -80,4 +80,5 @@
 	exprp = false,
 	expraltp = false,
+	genericsp = false,
 	libcfap = false,
 	nopreludep = false,
@@ -320,7 +321,12 @@
 		OPTPRINT("instantiateGenerics")
 		GenPoly::instantiateGeneric( translationUnit );
+		if ( genericsp ) {
+			dump( translationUnit );
+			return 0;
+		}
 		OPTPRINT( "convertLvalue" )
 		GenPoly::convertLvalue( translationUnit );
 
+
 		if ( bboxp ) {
 			dump( translationUnit );
@@ -340,7 +346,9 @@
 
 		CodeTools::fillLocations( translationUnit );
+		OPTPRINT( "codegen" )
 		CodeGen::generate( translationUnit, *output, ! noprotop, prettycodegenp, true, linemarks );
 
 		CodeGen::FixMain::fix( *output, treep ? "../prelude/bootloader.c" : CFA_LIBDIR "/bootloader.c" );
+		OPTPRINT( "end" )
 
 		if ( output != &cout ) {
@@ -407,5 +415,5 @@
 
 	int c;
-	while ( (c = getopt_long( argc, argv, "abBcCdefglLmnNpqrstTvyzZD:F:", long_opts, &long_index )) != -1 ) {
+	while ( (c = getopt_long( argc, argv, "abBcCdefgGlLmnNpqrstTvyzZD:F:", long_opts, &long_index )) != -1 ) {
 		switch ( c ) {
 		  case Ast:
@@ -442,4 +450,7 @@
 		  case 'g':										// bison debugging info (grammar rules)
 			yydebug = true;
+			break;
+		  case 'G':                   // dump AST after instantiate generics
+			genericsp = true;
 			break;
 		  case LibCFA:
