Index: src/CompilationState.cc
===================================================================
--- src/CompilationState.cc	(revision 019b2d3d8a6969b118fb79b95ec14714637937aa)
+++ src/CompilationState.cc	(revision 64b3cdad86f2d4a835df65ea2385cdcc3c112e34)
@@ -33,5 +33,4 @@
 	useNewAST = true,
 	nomainp = false,
-	parsep = false,
 	resolvep = false,
 	resolvprotop = false,
Index: src/CompilationState.h
===================================================================
--- src/CompilationState.h	(revision 019b2d3d8a6969b118fb79b95ec14714637937aa)
+++ src/CompilationState.h	(revision 64b3cdad86f2d4a835df65ea2385cdcc3c112e34)
@@ -32,5 +32,4 @@
 	useNewAST,
 	nomainp,
-	parsep,
 	resolvep,
 	resolvprotop,
Index: src/Parser/RunParser.cpp
===================================================================
--- src/Parser/RunParser.cpp	(revision 019b2d3d8a6969b118fb79b95ec14714637937aa)
+++ src/Parser/RunParser.cpp	(revision 64b3cdad86f2d4a835df65ea2385cdcc3c112e34)
@@ -45,10 +45,4 @@
 } // parse
 
-void dumpParseTree( std::ostream & out ) {
-	parseTree->printList( out );
-	delete parseTree;
-	parseTree = nullptr;
-}
-
 ast::TranslationUnit buildUnit(void) {
 	std::list<Declaration *> translationUnit;
Index: src/Parser/RunParser.hpp
===================================================================
--- src/Parser/RunParser.hpp	(revision 019b2d3d8a6969b118fb79b95ec14714637937aa)
+++ src/Parser/RunParser.hpp	(revision 64b3cdad86f2d4a835df65ea2385cdcc3c112e34)
@@ -31,7 +31,4 @@
 void parse( FILE * input, LinkageSpec::Spec linkage, bool alwaysExit = false );
 
-/// Drain the internal accumulator of parsed code and print it to the stream.
-void dumpParseTree( std::ostream & );
-
 /// Drain the internal accumulator of parsed code and build a translation
 /// unit from it.
Index: src/main.cc
===================================================================
--- src/main.cc	(revision 019b2d3d8a6969b118fb79b95ec14714637937aa)
+++ src/main.cc	(revision 64b3cdad86f2d4a835df65ea2385cdcc3c112e34)
@@ -228,4 +228,5 @@
 	ostream * output = & cout;
 	list< Declaration * > translationUnit;
+	ast::TranslationUnit transUnit;
 
 	Signal( SIGSEGV, sigSegvBusHandler, SA_SIGINFO );
@@ -294,10 +295,5 @@
 		parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, yydebug );
 
-		if ( parsep ) {
-			dumpParseTree( cout );
-			return EXIT_SUCCESS;
-		} // if
-
-		auto transUnit = buildUnit();
+		transUnit = buildUnit();
 
 		if ( astp ) {
@@ -467,5 +463,11 @@
 		if ( errorp ) {
 			cerr << "---AST at error:---" << endl;
-			dump( translationUnit, cerr );
+			// We check which section the errors came from without looking at
+			// transUnit because std::move means it could look like anything.
+			if ( !translationUnit.empty() ) {
+				dump( translationUnit, cerr );
+			} else {
+				dump( std::move( transUnit ), cerr );
+			}
 			cerr << endl << "---End of AST, begin error message:---\n" << endl;
 		} // if
@@ -571,5 +573,4 @@
 	{ "rproto", resolvprotop, true, "resolver-proto instance" },
 	{ "rsteps", resolvep, true, "print resolver steps" },
-	{ "tree", parsep, true, "print parse tree" },
 	// code dumps
 	{ "ast", astp, true, "print AST after parsing" },
