Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision 724c2b6f8ab60e02cc9a9c5872b23139ff804274)
+++ src/SymTab/Validate.cc	(revision 1db21619127c2047acc4bad02dd9a5234cf88d00)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Sun May 17 21:50:04 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Tue Jul 14 12:27:54 2015
-// Update Count     : 186
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jul 16 16:10:02 2015
+// Update Count     : 189
 //
 
@@ -162,5 +162,5 @@
 	class EliminateTypedef : public Mutator {
 	  public:
-	  EliminateTypedef() : scopeLevel( 0 ) {}
+		EliminateTypedef() : scopeLevel( 0 ) {}
 		static void eliminateTypedef( std::list< Declaration * > &translationUnit );
 	  private:
@@ -168,5 +168,5 @@
 		virtual TypeDecl *mutate( TypeDecl *typeDecl );
 		virtual DeclarationWithType *mutate( FunctionDecl *funcDecl );
-		virtual ObjectDecl *mutate( ObjectDecl *objDecl );
+		virtual DeclarationWithType *mutate( ObjectDecl *objDecl );
 		virtual CompoundStmt *mutate( CompoundStmt *compoundStmt );
 		virtual Type *mutate( TypeInstType *aggregateUseType );
@@ -612,8 +612,8 @@
 
 		// need to remove the prototypes, since this may be nested in a routine
-		for (int start = 0, end = assigns.size()/2; start < end; start++) {
+		for ( int start = 0, end = assigns.size() / 2; start < end; start++ ) {
 			delete assigns.front();
 			assigns.pop_front();
-		}
+		} // for
 
 		declsToAdd.insert( declsToAdd.begin(), assigns.begin(), assigns.end() );
@@ -830,5 +830,5 @@
 				rtt->get_parameters().clear();
 				cloneAll(typeInst->get_parameters(), rtt->get_parameters());
-			}
+			} // if
 			delete typeInst;
 			return ret;
@@ -884,7 +884,12 @@
 	}
 
-	ObjectDecl *EliminateTypedef::mutate( ObjectDecl * objDecl ) {
+	DeclarationWithType *EliminateTypedef::mutate( ObjectDecl * objDecl ) {
 		TypedefMap oldNames = typedefNames;
-		ObjectDecl *ret = Mutator::mutate( objDecl );
+		DeclarationWithType *ret = Mutator::mutate( objDecl );
+		if ( FunctionType *funtype = dynamic_cast<FunctionType *>( ret->get_type() ) ) {
+			return new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, ret->get_isInline(), ret->get_isNoreturn() );
+		} else if ( objDecl->get_isInline() || objDecl->get_isNoreturn() ) {
+			throw SemanticError( "invalid inline or _Noreturn specification in declaration of ", objDecl );
+		} // if
 		typedefNames = oldNames;
 		return ret;
@@ -950,5 +955,5 @@
 	}
 
-		Declaration *EliminateTypedef::mutate( ContextDecl * contextDecl ) {
+	Declaration *EliminateTypedef::mutate( ContextDecl * contextDecl ) {
 		Mutator::mutate( contextDecl );
 		return handleAggregate( contextDecl );
