Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision bd46af4995cdaf5adc29d05800859499c62eb0fd)
+++ src/Parser/DeclarationNode.cc	(revision d180746e9c094bb8a0500bb2383c1d5d8616da38)
@@ -14,17 +14,26 @@
 //
 
-#include <string>
-#include <list>
-#include <iterator>
-#include <algorithm>
-#include <cassert>
-
-#include "TypeData.h"
-
-#include "SynTree/Attribute.h"
-#include "SynTree/Declaration.h"
-#include "SynTree/Expression.h"
-
-#include "TypedefTable.h"
+#include <cassert>                 // for assert, assertf, safe_dynamic_cast
+#include <iterator>                // for back_insert_iterator
+#include <list>                    // for list
+#include <memory>                  // for unique_ptr
+#include <ostream>                 // for operator<<, ostream, basic_ostream
+#include <string>                  // for string, operator+, allocator, char...
+
+#include "Common/SemanticError.h"  // for SemanticError
+#include "Common/UniqueName.h"     // for UniqueName
+#include "Common/utility.h"        // for maybeClone, maybeBuild, CodeLocation
+#include "Parser/LinkageSpec.h"    // for Spec, linkageName, Cforall
+#include "Parser/ParseNode.h"      // for DeclarationNode, ExpressionNode
+#include "SynTree/Attribute.h"     // for Attribute
+#include "SynTree/Declaration.h"   // for TypeDecl, ObjectDecl, Declaration
+#include "SynTree/Expression.h"    // for Expression, ConstantExpr
+#include "SynTree/Statement.h"     // for AsmStmt
+#include "SynTree/Type.h"          // for Type, Type::StorageClasses, Type::...
+#include "TypeData.h"              // for TypeData, TypeData::Aggregate_t
+#include "TypedefTable.h"          // for TypedefTable, TypedefTable::kind_t...
+
+class Initializer;
+
 extern TypedefTable typedefTable;
 
Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision bd46af4995cdaf5adc29d05800859499c62eb0fd)
+++ src/Parser/ExpressionNode.cc	(revision d180746e9c094bb8a0500bb2383c1d5d8616da38)
@@ -14,13 +14,22 @@
 //
 
-#include <climits>										// access INT_MAX, UINT_MAX, LONG_MAX, ULONG_MAX, LLONG_MAX
-#include <sstream>
-
-#include "ParseNode.h"
-#include "TypeData.h"
-#include "SynTree/Constant.h"
-#include "SynTree/Expression.h"
-#include "SynTree/Declaration.h"
-#include "parserutility.h"
+#include <assert.h>                // for assert
+#include <stdio.h>                 // for sscanf, size_t
+#include <climits>                 // for LLONG_MAX, LONG_MAX, INT_MAX, UINT...
+#include <list>                    // for list
+#include <sstream>                 // for basic_istream::operator>>, basic_i...
+#include <string>                  // for string, operator+, operator==
+
+#include "Common/SemanticError.h"  // for SemanticError
+#include "Common/utility.h"        // for maybeMoveBuild, maybeBuild, CodeLo...
+#include "ParseNode.h"             // for ExpressionNode, maybeMoveBuildType
+#include "SynTree/Constant.h"      // for Constant
+#include "SynTree/Declaration.h"   // for EnumDecl, StructDecl, UnionDecl
+#include "SynTree/Expression.h"    // for Expression, ConstantExpr, NameExpr
+#include "SynTree/Statement.h"     // for CompoundStmt, Statement
+#include "SynTree/Type.h"          // for BasicType, Type, Type::Qualifiers
+#include "parserutility.h"         // for notZeroExpr
+
+class Initializer;
 
 using namespace std;
Index: src/Parser/InitializerNode.cc
===================================================================
--- src/Parser/InitializerNode.cc	(revision bd46af4995cdaf5adc29d05800859499c62eb0fd)
+++ src/Parser/InitializerNode.cc	(revision d180746e9c094bb8a0500bb2383c1d5d8616da38)
@@ -14,11 +14,15 @@
 //
 
-#include <cassert>
-#include <iostream>
+#include <iostream>                // for operator<<, ostream, basic_ostream
+#include <list>                    // for list
+#include <string>                  // for operator<<, string
+
 using namespace std;
 
-#include "ParseNode.h"
-#include "SynTree/Expression.h"
-#include "SynTree/Initializer.h"
+#include "Common/SemanticError.h"  // for SemanticError
+#include "Common/utility.h"        // for maybeBuild
+#include "ParseNode.h"             // for InitializerNode, ExpressionNode
+#include "SynTree/Expression.h"    // for Expression
+#include "SynTree/Initializer.h"   // for Initializer, ListInit, SingleInit
 
 InitializerNode::InitializerNode( ExpressionNode * _expr, bool aggrp, ExpressionNode * des )
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision bd46af4995cdaf5adc29d05800859499c62eb0fd)
+++ src/Parser/ParseNode.h	(revision d180746e9c094bb8a0500bb2383c1d5d8616da38)
@@ -16,23 +16,28 @@
 #pragma once
 
-#include <string>
-#include <list>
-#include <iterator>
-#include <memory>
-
-#include "Parser/LinkageSpec.h"
-#include "SynTree/Type.h"
-#include "SynTree/Expression.h"
-#include "SynTree/Statement.h"
-#include "SynTree/Label.h"
-#include "Common/utility.h"
-#include "Common/UniqueName.h"
-
+#include <algorithm>               // for move
+#include <cassert>                 // for assert, assertf
+#include <iosfwd>                  // for ostream
+#include <iterator>                // for back_insert_iterator
+#include <list>                    // for list
+#include <memory>                  // for unique_ptr, pointer_traits
+#include <string>                  // for string
+
+#include "Common/SemanticError.h"  // for SemanticError
+#include "Common/utility.h"        // for maybeClone, CodeLocation, maybeBuild
+#include "Parser/LinkageSpec.h"    // for Spec
+#include "SynTree/Expression.h"    // for Expression, ConstantExpr (ptr only)
+#include "SynTree/Label.h"         // for Label
+#include "SynTree/Statement.h"     // for Statement, BranchStmt, BranchStmt:...
+#include "SynTree/Type.h"          // for Type, Type::FuncSpecifiers, Type::...
+
+class Attribute;
+class Declaration;
+class DeclarationNode;
+class DeclarationWithType;
+class ExpressionNode;
+class Initializer;
 class StatementNode;
-class CompoundStmtNode;
-class DeclarationNode;
-class ExpressionNode;
-class InitializerNode;
-class Attribute;
+class UniqueName;
 
 //##############################################################################
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision bd46af4995cdaf5adc29d05800859499c62eb0fd)
+++ src/Parser/StatementNode.cc	(revision d180746e9c094bb8a0500bb2383c1d5d8616da38)
@@ -14,13 +14,18 @@
 //
 
-#include <list>
-#include <algorithm>
-#include <cassert>
-
-#include "ParseNode.h"
-#include "SynTree/Statement.h"
-#include "SynTree/Expression.h"
-#include "parserutility.h"
-#include "Common/utility.h"
+#include <cassert>                 // for assert, safe_dynamic_cast, assertf
+#include <list>                    // for list
+#include <memory>                  // for unique_ptr
+#include <string>                  // for string
+
+#include "Common/SemanticError.h"  // for SemanticError
+#include "Common/utility.h"        // for maybeMoveBuild, maybeBuild
+#include "ParseNode.h"             // for StatementNode, ExpressionNode, bui...
+#include "SynTree/Expression.h"    // for Expression, ConstantExpr
+#include "SynTree/Label.h"         // for Label, noLabels
+#include "SynTree/Statement.h"     // for Statement, BranchStmt, CaseStmt
+#include "parserutility.h"         // for notZeroExpr
+
+class Declaration;
 
 using namespace std;
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision bd46af4995cdaf5adc29d05800859499c62eb0fd)
+++ src/Parser/TypeData.cc	(revision d180746e9c094bb8a0500bb2383c1d5d8616da38)
@@ -14,14 +14,19 @@
 //
 
-#include <cassert>
-#include <algorithm>
-#include <iterator>
-#include "Common/utility.h"
+#include <cassert>                 // for assert
+#include <ostream>                 // for operator<<, ostream, basic_ostream
+
+#include "Common/SemanticError.h"  // for SemanticError
+#include "Common/utility.h"        // for maybeClone, maybeBuild, maybeMoveB...
+#include "Parser/ParseNode.h"      // for DeclarationNode, ExpressionNode
+#include "SynTree/Declaration.h"   // for TypeDecl, ObjectDecl, FunctionDecl
+#include "SynTree/Expression.h"    // for Expression, ConstantExpr (ptr only)
+#include "SynTree/Initializer.h"   // for SingleInit, Initializer (ptr only)
+#include "SynTree/Statement.h"     // for CompoundStmt, Statement
+#include "SynTree/Type.h"          // for BasicType, Type, Type::ForallList
 #include "TypeData.h"
-#include "SynTree/Type.h"
-#include "SynTree/Declaration.h"
-#include "SynTree/Expression.h"
-#include "SynTree/Statement.h"
-#include "SynTree/Initializer.h"
+
+class Attribute;
+
 using namespace std;
 
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision bd46af4995cdaf5adc29d05800859499c62eb0fd)
+++ src/Parser/TypeData.h	(revision d180746e9c094bb8a0500bb2383c1d5d8616da38)
@@ -16,6 +16,12 @@
 #pragma once
 
-#include "ParseNode.h"
-#include "SynTree/Type.h"
+#include <iosfwd>                // for ostream
+#include <list>                  // for list
+#include <string>                // for string
+
+#include "ParseNode.h"           // for DeclarationNode, DeclarationNode::Ag...
+#include "Parser/LinkageSpec.h"  // for Spec
+#include "SynTree/Type.h"        // for Type, ReferenceToType (ptr only)
+#include "SynTree/SynTree.h"     // for Visitor Nodes
 
 struct TypeData {
Index: src/Parser/TypedefTable.cc
===================================================================
--- src/Parser/TypedefTable.cc	(revision bd46af4995cdaf5adc29d05800859499c62eb0fd)
+++ src/Parser/TypedefTable.cc	(revision d180746e9c094bb8a0500bb2383c1d5d8616da38)
@@ -14,12 +14,20 @@
 //
 
-#include <map>
-#include <list>
-#include <cassert>
+#include <ext/alloc_traits.h>    // for __alloc_traits<>::value_type
+#include <cassert>               // for assert
+#include <list>                  // for list, _List_iterator, list<>::iterator
+#include <map>                   // for _Rb_tree_iterator, _Rb_tree_const_it...
+#include <memory>                // for allocator_traits<>::value_type
+#include <utility>               // for pair
+
+#include "Parser/ParserTypes.h"  // for typedefTable
+#include "Parser/parser.hh"      // for IDENTIFIER
 #include "TypedefTable.h"
+
 using namespace std;
 
 #if 0
 #include <iostream>
+
 #define debugPrint( x ) cerr << x
 #else
Index: src/Parser/TypedefTable.h
===================================================================
--- src/Parser/TypedefTable.h	(revision bd46af4995cdaf5adc29d05800859499c62eb0fd)
+++ src/Parser/TypedefTable.h	(revision d180746e9c094bb8a0500bb2383c1d5d8616da38)
@@ -16,11 +16,10 @@
 #pragma once
 
-#include <map>
-#include <list>
-#include <string>
-#include <stack>
+#include <list>       // for list
+#include <map>        // for map, map<>::value_compare
+#include <stack>      // for stack
+#include <string>     // for string
 
-#include "ParserTypes.h"
-#include "parser.hh"
+#include "parser.hh"  // for IDENTIFIER, TYPEDEFname, TYPEGENname
 
 class TypedefTable {
Index: src/Parser/parserutility.cc
===================================================================
--- src/Parser/parserutility.cc	(revision bd46af4995cdaf5adc29d05800859499c62eb0fd)
+++ src/Parser/parserutility.cc	(revision d180746e9c094bb8a0500bb2383c1d5d8616da38)
@@ -15,6 +15,11 @@
 
 #include "parserutility.h"
-#include "SynTree/Type.h"
-#include "SynTree/Expression.h"
+
+#include <list>                  // for list
+#include <string>                // for string
+
+#include "SynTree/Constant.h"    // for Constant
+#include "SynTree/Expression.h"  // for UntypedExpr, CastExpr, ConstantExpr
+#include "SynTree/Type.h"        // for BasicType, ZeroType, BasicType::Kind...
 
 // rewrite
Index: src/Parser/parserutility.h
===================================================================
--- src/Parser/parserutility.h	(revision bd46af4995cdaf5adc29d05800859499c62eb0fd)
+++ src/Parser/parserutility.h	(revision d180746e9c094bb8a0500bb2383c1d5d8616da38)
@@ -16,5 +16,5 @@
 #pragma once
 
-#include "SynTree/SynTree.h"
+class Expression;
 
 Expression *notZeroExpr( Expression *orig );
