Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/GenPoly/Box.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 08:06:05 2017
-// Update Count     : 337
+// Last Modified On : Thu Mar 16 08:35:33 2017
+// Update Count     : 338
 //
 
@@ -301,5 +301,5 @@
 													 functionNesting > 0 ? Type::StorageClasses() : Type::StorageClasses( Type::Static ),
 													 LinkageSpec::AutoGen, layoutFnType, new CompoundStmt( noLabels ),
-													 std::list< Attribute * >(), DeclarationNode::FuncSpecifiers( DeclarationNode::Inline ) );
+													 std::list< Attribute * >(), Type::FuncSpecifiers( Type::Inline ) );
 		layoutDecl->fixUniqueId();
 		return layoutDecl;
Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/Parser/DeclarationNode.cc	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 07:59:40 2017
-// Update Count     : 1003
+// Last Modified On : Thu Mar 16 08:37:57 2017
+// Update Count     : 1006
 //
 
@@ -33,5 +33,4 @@
 
 // These must remain in the same order as the corresponding DeclarationNode enumerations.
-const char * DeclarationNode::FuncSpecifiers::Names[] = { "inline", "fortran", "_Noreturn", "NoFunctionSpecifierNames" };
 const char * DeclarationNode::basicTypeNames[] = { "void", "_Bool", "char", "int", "float", "double", "long double", "NoBasicTypeNames" };
 const char * DeclarationNode::complexTypeNames[] = { "_Complex", "_Imaginary", "NoComplexTypeNames" };
@@ -186,5 +185,5 @@
 } // DeclarationNode::newStorageClass
 
-DeclarationNode * DeclarationNode::newFuncSpecifier( FuncSpecifiers fs ) {
+DeclarationNode * DeclarationNode::newFuncSpecifier( Type::FuncSpecifiers fs ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->funcSpecs = fs;
@@ -448,7 +447,7 @@
 void DeclarationNode::checkSpecifiers( DeclarationNode * src ) {
 	if ( (funcSpecs.val & src->funcSpecs.val) != 0 ) {	// duplicates ?
-		for ( unsigned int i = 0; i < NumFuncSpecifier; i += 1 ) { // find duplicates
+		for ( unsigned int i = 0; i < Type::NumFuncSpecifier; i += 1 ) { // find duplicates
 			if ( funcSpecs[i] && src->funcSpecs[i] ) {
-				appendError( error, string( "duplicate " ) + FuncSpecifiers::Names[i] );
+				appendError( error, string( "duplicate " ) + Type::FuncSpecifiers::Names[i] );
 			} // if
 		} // for
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/Parser/ParseNode.h	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 07:46:33 2017
-// Update Count     : 772
+// Last Modified On : Thu Mar 16 08:32:43 2017
+// Update Count     : 776
 //
 
@@ -201,28 +201,4 @@
 class DeclarationNode : public ParseNode {
   public:
-	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 BasicType { Void, Bool, Char, Int, Float, Double, LongDouble, NoBasicType };
 	enum ComplexType { Complex, Imaginary, NoComplexType };
@@ -242,5 +218,5 @@
 
 	static DeclarationNode * newStorageClass( Type::StorageClasses );
-	static DeclarationNode * newFuncSpecifier( FuncSpecifiers );
+	static DeclarationNode * newFuncSpecifier( Type::FuncSpecifiers );
 	static DeclarationNode * newTypeQualifier( Type::Qualifiers );
 	static DeclarationNode * newBasicType( BasicType );
@@ -339,6 +315,6 @@
 	TypeData * type;
 
+	Type::FuncSpecifiers funcSpecs;
 	Type::StorageClasses storageClasses;
-	FuncSpecifiers funcSpecs;
 
 	ExpressionNode * bitfieldWidth;
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/Parser/TypeData.cc	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:12:51 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 07:54:50 2017
-// Update Count     : 558
+// Last Modified On : Thu Mar 16 08:32:42 2017
+// Update Count     : 559
 //
 
@@ -778,5 +778,5 @@
 } // buildTypeof
 
-Declaration * buildDecl( const TypeData * td, const string &name, Type::StorageClasses scs, Expression * bitfieldWidth, DeclarationNode::FuncSpecifiers funcSpec, LinkageSpec::Spec linkage, ConstantExpr *asmName, Initializer * init, std::list< Attribute * > attributes ) {
+Declaration * buildDecl( const TypeData * td, const string &name, Type::StorageClasses scs, Expression * bitfieldWidth, Type::FuncSpecifiers funcSpec, LinkageSpec::Spec linkage, ConstantExpr *asmName, Initializer * init, std::list< Attribute * > attributes ) {
 	if ( td->kind == TypeData::Function ) {
 		if ( td->function.idList ) {					// KR function ?
@@ -814,5 +814,5 @@
 			break;
 		  default:
-			ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType * >( buildDecl( td->base, "", Type::StorageClasses(), nullptr, DeclarationNode::FuncSpecifiers(), LinkageSpec::Cforall, nullptr ) ) );
+			ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType * >( buildDecl( td->base, "", Type::StorageClasses(), nullptr, Type::FuncSpecifiers(), LinkageSpec::Cforall, nullptr ) ) );
 		} // switch
 	} else {
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/Parser/TypeData.h	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:18:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 07:53:41 2017
-// Update Count     : 184
+// Last Modified On : Thu Mar 16 08:32:39 2017
+// Update Count     : 185
 //
 
@@ -109,5 +109,5 @@
 TupleType * buildTuple( const TypeData * );
 TypeofType * buildTypeof( const TypeData * );
-Declaration * buildDecl( const TypeData *, const std::string &, Type::StorageClasses, Expression *, DeclarationNode::FuncSpecifiers funcSpec, LinkageSpec::Spec, ConstantExpr *asmName, Initializer * init = nullptr, std::list< class Attribute * > attributes = std::list< class Attribute * >() );
+Declaration * buildDecl( const TypeData *, const std::string &, Type::StorageClasses, Expression *, Type::FuncSpecifiers funcSpec, LinkageSpec::Spec, ConstantExpr *asmName, Initializer * init = nullptr, std::list< class Attribute * > attributes = std::list< class Attribute * >() );
 FunctionType * buildFunction( const TypeData * );
 void buildKRFunction( const TypeData::Function_t & function );
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/Parser/parser.yy	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 08:00:59 2017
-// Update Count     : 2309
+// Last Modified On : Thu Mar 16 08:36:17 2017
+// Update Count     : 2310
 //
 
@@ -1460,9 +1460,9 @@
 		// Put function specifiers here to simplify parsing rules, but separate them semantically.
 	| INLINE											// C99
-		{ $$ = DeclarationNode::newFuncSpecifier( DeclarationNode::Inline ); }
+		{ $$ = DeclarationNode::newFuncSpecifier( Type::Inline ); }
 	| FORTRAN											// C99
-		{ $$ = DeclarationNode::newFuncSpecifier( DeclarationNode::Fortran ); }
+		{ $$ = DeclarationNode::newFuncSpecifier( Type::Fortran ); }
 	| NORETURN											// C11
-		{ $$ = DeclarationNode::newFuncSpecifier( DeclarationNode::Noreturn ); }
+		{ $$ = DeclarationNode::newFuncSpecifier( Type::Noreturn ); }
 	;
 
Index: src/SymTab/Autogen.cc
===================================================================
--- src/SymTab/Autogen.cc	(revision 68fe077a5764a46debddf5a5dc89ef3614748ccd)
+++ src/SymTab/Autogen.cc	(revision ddfd945b741f2ed2bdb7c54fa54688244b98c7de)
@@ -10,6 +10,6 @@
 // Created On       : Thu Mar 03 15:45:56 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 16 08:03:35 2017
-// Update Count     : 56
+// Last Modified On : Thu Mar 16 08:37:22 2017
+// Update Count     : 59
 //
 
@@ -165,5 +165,5 @@
 		LinkageSpec::Spec spec = isIntrinsic ? LinkageSpec::Intrinsic : LinkageSpec::AutoGen;
 		FunctionDecl * decl = new FunctionDecl( fname, scs, spec, ftype, new CompoundStmt( noLabels ),
-												std::list< Attribute * >(), DeclarationNode::FuncSpecifiers( DeclarationNode::Inline ) );
+												std::list< Attribute * >(), Type::FuncSpecifiers( Type::Inline ) );
 		decl->fixUniqueId();
 		return decl;
@@ -720,11 +720,11 @@
 					TypeInstType * inst = new TypeInstType( Type::Qualifiers(), newDecl->get_name(), newDecl );
 					newDecl->get_assertions().push_back( new FunctionDecl( "?=?", Type::StorageClasses(), LinkageSpec::Cforall, genAssignType( inst ), nullptr,
-																		   std::list< Attribute * >(), DeclarationNode::FuncSpecifiers( DeclarationNode::Inline ) ) );
+																		   std::list< Attribute * >(), Type::FuncSpecifiers( Type::Inline ) ) );
 					newDecl->get_assertions().push_back( new FunctionDecl( "?{}", Type::StorageClasses(), LinkageSpec::Cforall, genDefaultType( inst ), nullptr,
-																		   std::list< Attribute * >(), DeclarationNode::FuncSpecifiers( DeclarationNode::Inline ) ) );
+																		   std::list< Attribute * >(), Type::FuncSpecifiers( Type::Inline ) ) );
 					newDecl->get_assertions().push_back( new FunctionDecl( "?{}", Type::StorageClasses(), LinkageSpec::Cforall, genCopyType( inst ), nullptr,
-																		   std::list< Attribute * >(), DeclarationNode::FuncSpecifiers( DeclarationNode::Inline ) ) );
+																		   std::list< Attribute * >(), Type::FuncSpecifiers( Type::Inline ) ) );
 					newDecl->get_assertions().push_back( new FunctionDecl( "^?{}", Type::StorageClasses(), LinkageSpec::Cforall, genDefaultType( inst ), nullptr,
-																		   std::list< Attribute * >(), DeclarationNode::FuncSpecifiers( DeclarationNode::Inline ) ) );
+																		   std::list< Attribute * >(), Type::FuncSpecifiers( Type::Inline ) ) );
 					typeParams.push_back( newDecl );
 					done.insert( ty->get_baseType() );
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 };
