Index: src/Common/Debug.h
===================================================================
--- src/Common/Debug.h	(revision c6747a1976ae3b05e7405ec67eca0b4196c994af)
+++ src/Common/Debug.h	(revision 25ba99989ac95d7ff7b36866920921f955fcf7c8)
@@ -24,15 +24,34 @@
 #include "SynTree/Declaration.h"
 
-/// debug codegen a translation unit
-static inline void debugCodeGen( const std::list< Declaration * > & translationUnit, const std::string & label ) {
-	std::list< Declaration * > decls;
+#define DEBUG
 
-	filter( translationUnit.begin(), translationUnit.end(), back_inserter( decls ), []( Declaration * decl ) {
-		return ! LinkageSpec::isBuiltin( decl->get_linkage() );
-	});
+namespace Debug {
+	/// debug codegen a translation unit
+	static inline void codeGen( __attribute__((unused)) const std::list< Declaration * > & translationUnit, __attribute__((unused)) const std::string & label ) {
+	#ifdef DEBUG
+		std::list< Declaration * > decls;
 
-	std::cerr << "======" << label << "======" << std::endl;
-	CodeGen::generate( decls, std::cerr, false, true );
-} // dump
+		filter( translationUnit.begin(), translationUnit.end(), back_inserter( decls ), []( Declaration * decl ) {
+			return ! LinkageSpec::isBuiltin( decl->get_linkage() );
+		});
+
+		std::cerr << "======" << label << "======" << std::endl;
+		CodeGen::generate( decls, std::cerr, false, true );
+	#endif
+	} // dump
+
+	static inline void treeDump( __attribute__((unused)) const std::list< Declaration * > & translationUnit, __attribute__((unused)) const std::string & label ) {
+	#ifdef DEBUG
+		std::list< Declaration * > decls;
+
+		filter( translationUnit.begin(), translationUnit.end(), back_inserter( decls ), []( Declaration * decl ) {
+			return ! LinkageSpec::isBuiltin( decl->get_linkage() );
+		});
+
+		std::cerr << "======" << label << "======" << std::endl;
+		printAll( decls, std::cerr );
+	#endif
+	} // dump
+}
 
 // Local Variables: //
