Index: src/SynTree/Declaration.cc
===================================================================
--- src/SynTree/Declaration.cc	(revision 20207c02efaa0537d8bd93ff326cf0baf5424a82)
+++ src/SynTree/Declaration.cc	(revision 2d019af1e5dc0df0ad2bbe9c215b4c34968890c0)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Dec 11 16:39:56 2019
-// Update Count     : 36
+// Last Modified On : Fri Mar 12 18:35:39 2021
+// Update Count     : 37
 //
 
@@ -66,4 +66,23 @@
 
 
+DirectiveDecl::DirectiveDecl( DirectiveStmt *stmt ) : Declaration( "", Type::StorageClasses(), LinkageSpec::C ), stmt( stmt ) {
+}
+
+DirectiveDecl::DirectiveDecl( const DirectiveDecl &other ) : Declaration( other ), stmt( maybeClone( other.stmt ) ) {
+}
+
+DirectiveDecl::~DirectiveDecl() {
+	delete stmt;
+}
+
+void DirectiveDecl::print( std::ostream &os, Indenter indent ) const {
+	stmt->print( os, indent );
+}
+
+void DirectiveDecl::printShort( std::ostream &os, Indenter indent ) const {
+	stmt->print( os, indent );
+}
+
+
 StaticAssertDecl::StaticAssertDecl( Expression * condition, ConstantExpr * message ) : Declaration( "", Type::StorageClasses(), LinkageSpec::C ), condition( condition ), message( message )  {
 }
Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 20207c02efaa0537d8bd93ff326cf0baf5424a82)
+++ src/SynTree/Declaration.h	(revision 2d019af1e5dc0df0ad2bbe9c215b4c34968890c0)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jan 11 20:48:39 2021
-// Update Count     : 158
+// Last Modified On : Fri Mar 12 18:35:36 2021
+// Update Count     : 159
 //
 
@@ -400,4 +400,23 @@
 };
 
+class DirectiveDecl : public Declaration {
+  public:
+	DirectiveStmt * stmt;
+
+	DirectiveDecl( DirectiveStmt * stmt );
+	DirectiveDecl( const DirectiveDecl & other );
+	virtual ~DirectiveDecl();
+
+	DirectiveStmt * get_stmt() { return stmt; }
+	void set_stmt( DirectiveStmt * newValue ) { stmt = newValue; }
+
+	virtual DirectiveDecl * clone() const override { return new DirectiveDecl( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual void accept( Visitor & v ) const override { v.visit( this ); }
+	virtual DirectiveDecl * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
+	virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
+};
+
 class StaticAssertDecl : public Declaration {
 public:
Index: src/SynTree/Mutator.h
===================================================================
--- src/SynTree/Mutator.h	(revision 20207c02efaa0537d8bd93ff326cf0baf5424a82)
+++ src/SynTree/Mutator.h	(revision 2d019af1e5dc0df0ad2bbe9c215b4c34968890c0)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 25 22:37:46 2019
-// Update Count     : 17
+// Last Modified On : Fri Mar 12 18:35:36 2021
+// Update Count     : 18
 //
 #pragma once
@@ -34,4 +34,5 @@
 	virtual Declaration * mutate( TypedefDecl * typeDecl ) = 0;
 	virtual AsmDecl * mutate( AsmDecl * asmDecl ) = 0;
+	virtual DirectiveDecl * mutate( DirectiveDecl * directiveDecl ) = 0;
 	virtual StaticAssertDecl * mutate( StaticAssertDecl * assertDecl ) = 0;
 
Index: src/SynTree/SynTree.h
===================================================================
--- src/SynTree/SynTree.h	(revision 20207c02efaa0537d8bd93ff326cf0baf5424a82)
+++ src/SynTree/SynTree.h	(revision 2d019af1e5dc0df0ad2bbe9c215b4c34968890c0)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 25 22:37:45 2019
-// Update Count     : 12
+// Last Modified On : Fri Mar 12 18:56:44 2021
+// Update Count     : 13
 //
 
@@ -36,4 +36,5 @@
 class TypedefDecl;
 class AsmDecl;
+class DirectiveDecl;
 class StaticAssertDecl;
 
Index: src/SynTree/Visitor.h
===================================================================
--- src/SynTree/Visitor.h	(revision 20207c02efaa0537d8bd93ff326cf0baf5424a82)
+++ src/SynTree/Visitor.h	(revision 2d019af1e5dc0df0ad2bbe9c215b4c34968890c0)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 25 22:21:49 2019
-// Update Count     : 14
+// Last Modified On : Fri Mar 12 18:35:35 2021
+// Update Count     : 15
 //
 
@@ -45,4 +45,6 @@
 	virtual void visit( AsmDecl * node ) { visit( const_cast<const AsmDecl *>(node) ); }
 	virtual void visit( const AsmDecl * asmDecl ) = 0;
+	virtual void visit( DirectiveDecl * node ) { visit( const_cast<const DirectiveDecl *>(node) ); }
+	virtual void visit( const DirectiveDecl * directiveDecl ) = 0;
 	virtual void visit( StaticAssertDecl * node ) { visit( const_cast<const StaticAssertDecl *>(node) ); }
 	virtual void visit( const StaticAssertDecl * assertDecl ) = 0;
