Index: src/SynTree/Mutator.h
===================================================================
--- src/SynTree/Mutator.h	(revision b9f383f02133e2fd12cbee9fc0753d823a608d5e)
+++ src/SynTree/Mutator.h	(revision b12c0367752d66bda0955feaa0c3ac4f7fa51973)
@@ -39,4 +39,5 @@
 	virtual Statement * mutate( ExprStmt * exprStmt ) = 0;
 	virtual Statement * mutate( AsmStmt * asmStmt ) = 0;
+	virtual Statement * mutate( DirectiveStmt * dirStmt ) = 0;
 	virtual Statement * mutate( IfStmt * ifStmt ) = 0;
 	virtual Statement * mutate( WhileStmt * whileStmt ) = 0;
Index: src/SynTree/Statement.cc
===================================================================
--- src/SynTree/Statement.cc	(revision b9f383f02133e2fd12cbee9fc0753d823a608d5e)
+++ src/SynTree/Statement.cc	(revision b12c0367752d66bda0955feaa0c3ac4f7fa51973)
@@ -94,4 +94,11 @@
 
 
+DirectiveStmt::DirectiveStmt( const std::string & directive ) : Statement(), directive( directive ) {}
+
+void DirectiveStmt::print( std::ostream &os, Indenter ) const {
+	os << "GCC Directive:" << directive << endl;
+}
+
+
 const char *BranchStmt::brType[] = { "Goto", "Break", "Continue" };
 
Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision b9f383f02133e2fd12cbee9fc0753d823a608d5e)
+++ src/SynTree/Statement.h	(revision b12c0367752d66bda0955feaa0c3ac4f7fa51973)
@@ -126,4 +126,17 @@
 };
 
+class DirectiveStmt : public Statement {
+	public:
+	std::string directive;
+
+	DirectiveStmt( const std::string & );
+	virtual ~DirectiveStmt(){}
+
+	virtual DirectiveStmt * clone() const { return new DirectiveStmt( *this ); }
+	virtual void accept( Visitor & v ) { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m ) { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const;
+};
+
 class IfStmt : public Statement {
   public:
Index: src/SynTree/SynTree.h
===================================================================
--- src/SynTree/SynTree.h	(revision b9f383f02133e2fd12cbee9fc0753d823a608d5e)
+++ src/SynTree/SynTree.h	(revision b12c0367752d66bda0955feaa0c3ac4f7fa51973)
@@ -44,4 +44,5 @@
 class ExprStmt;
 class AsmStmt;
+class DirectiveStmt;
 class IfStmt;
 class WhileStmt;
Index: src/SynTree/Visitor.h
===================================================================
--- src/SynTree/Visitor.h	(revision b9f383f02133e2fd12cbee9fc0753d823a608d5e)
+++ src/SynTree/Visitor.h	(revision b12c0367752d66bda0955feaa0c3ac4f7fa51973)
@@ -41,4 +41,5 @@
 	virtual void visit( ExprStmt * exprStmt ) = 0;
 	virtual void visit( AsmStmt * asmStmt ) = 0;
+	virtual void visit( DirectiveStmt * directiveStmt ) = 0;
 	virtual void visit( IfStmt * ifStmt ) = 0;
 	virtual void visit( WhileStmt * whileStmt ) = 0;
