Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/SynTree/Declaration.h	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 07:48:23 2017
-// Update Count     : 117
+// Last Modified On : Thu Mar 16 08:34:11 2017
+// Update Count     : 118
 //
 
@@ -64,5 +64,5 @@
 class DeclarationWithType : public Declaration {
   public:
-	DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, DeclarationNode::FuncSpecifiers fs );
+	DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs );
 	DeclarationWithType( const DeclarationWithType &other );
 	virtual ~DeclarationWithType();
@@ -82,6 +82,6 @@
 	const std::list< Attribute * >& get_attributes() const { return attributes; }
 
-	DeclarationNode::FuncSpecifiers get_funcSpec() const { return fs; }
-	//void set_functionSpecifiers( DeclarationNode::FuncSpecifiers newValue ) { fs = newValue; }
+	Type::FuncSpecifiers get_funcSpec() const { return fs; }
+	//void set_functionSpecifiers( Type::FuncSpecifiers newValue ) { fs = newValue; }
 
 	virtual DeclarationWithType *clone() const = 0;
@@ -98,5 +98,5 @@
 	ConstantExpr *asmName;
 	std::list< Attribute * > attributes;
-	DeclarationNode::FuncSpecifiers fs;
+	Type::FuncSpecifiers fs;
 };
 
@@ -105,5 +105,5 @@
   public:
 	ObjectDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init,
-				const std::list< Attribute * > attributes = std::list< Attribute * >(), DeclarationNode::FuncSpecifiers fs = DeclarationNode::FuncSpecifiers() );
+				const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() );
 	ObjectDecl( const ObjectDecl &other );
 	virtual ~ObjectDecl();
@@ -133,5 +133,5 @@
   public:
 	FunctionDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements,
-				  const std::list< Attribute * > attributes = std::list< Attribute * >(), DeclarationNode::FuncSpecifiers fs = DeclarationNode::FuncSpecifiers() );
+				  const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() );
 	FunctionDecl( const FunctionDecl &other );
 	virtual ~FunctionDecl();
Index: src/SynTree/DeclarationWithType.cc
===================================================================
--- src/SynTree/DeclarationWithType.cc	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/SynTree/DeclarationWithType.cc	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 07:49:27 2017
-// Update Count     : 24
+// Last Modified On : Thu Mar 16 08:34:35 2017
+// Update Count     : 25
 //
 
@@ -19,5 +19,5 @@
 #include "Common/utility.h"
 
-DeclarationWithType::DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, DeclarationNode::FuncSpecifiers fs )
+DeclarationWithType::DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs )
 	: Declaration( name, scs, linkage ), asmName( nullptr ), attributes( attributes ), fs( fs ) {
 }
Index: src/SynTree/FunctionDecl.cc
===================================================================
--- src/SynTree/FunctionDecl.cc	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/SynTree/FunctionDecl.cc	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 07:49:35 2017
-// Update Count     : 73
+// Last Modified On : Thu Mar 16 08:33:41 2017
+// Update Count     : 74
 //
 
@@ -26,5 +26,5 @@
 extern bool translation_unit_nomain;
 
-FunctionDecl::FunctionDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements, std::list< Attribute * > attributes, DeclarationNode::FuncSpecifiers fs )
+FunctionDecl::FunctionDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements, std::list< Attribute * > attributes, Type::FuncSpecifiers fs )
 	: Parent( name, scs, linkage, attributes, fs ), type( type ), statements( statements ) {
 	// hack forcing the function "main" to have Cforall linkage to replace main even if it is inside an extern
Index: src/SynTree/ObjectDecl.cc
===================================================================
--- src/SynTree/ObjectDecl.cc	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/SynTree/ObjectDecl.cc	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 07:49:51 2017
-// Update Count     : 58
+// Last Modified On : Thu Mar 16 08:34:27 2017
+// Update Count     : 59
 //
 
@@ -22,5 +22,5 @@
 #include "Statement.h"
 
-ObjectDecl::ObjectDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes, DeclarationNode::FuncSpecifiers fs )
+ObjectDecl::ObjectDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes, Type::FuncSpecifiers fs )
 	: Parent( name, scs, linkage, attributes, fs ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) {
 }
Index: src/SynTree/Type.cc
===================================================================
--- src/SynTree/Type.cc	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/SynTree/Type.cc	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 07:57:45 2017
-// Update Count     : 20
+// Last Modified On : Thu Mar 16 08:32:44 2017
+// Update Count     : 22
 //
 
@@ -60,4 +60,5 @@
 
 // These must remain in the same order as the corresponding bit fields.
+const char * Type::FuncSpecifiers::Names[] = { "inline", "fortran", "_Noreturn" };
 const char * Type::StorageClasses::Names[] = { "extern", "static", "auto", "register", "_Thread_local" };
 const char * Type::Qualifiers::Names[] = { "const", "restrict", "volatile", "lvalue", "mutex", "_Atomic" };
Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/SynTree/Type.h	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 07:45:29 2017
-// Update Count     : 90
+// Last Modified On : Thu Mar 16 08:28:02 2017
+// Update Count     : 91
 //
 
@@ -25,4 +25,28 @@
   public:
 	// enum must remain in the same order as the corresponding bit fields.
+
+	enum { Inline = 1 << 0, Noreturn = 1 << 1, Fortran = 1 << 2, NumFuncSpecifier = 3 };
+	union FuncSpecifiers {
+		static const char * Names[];
+		unsigned int val;
+		struct {
+			bool is_inline : 1;
+			bool is_noreturn : 1;
+			bool is_fortran : 1;
+		};
+		FuncSpecifiers() : val( 0 ) {}
+		FuncSpecifiers( unsigned int val ) : val( val ) {}
+		bool operator[]( unsigned int i ) const { return val & (1 << i); }
+		bool any() const { return val != 0; }
+		void print( std::ostream & os ) const {
+			if ( (*this).any() ) {						// any function specifiers ?
+				for ( unsigned int i = 0; i < NumFuncSpecifier; i += 1 ) {
+					if ( (*this)[i] ) {
+						os << FuncSpecifiers::Names[i] << ' ';
+					} // if
+				} // for
+			} // if
+		}
+	}; // FuncSpecifiers
 
 	enum { Extern = 1 << 0, Static = 1 << 1, Auto = 1 << 2, Register = 1 << 3, Threadlocal = 1 << 4, NumStorageClass = 5 };
