Index: src/Validate/FindSpecialDecls.cc
===================================================================
--- src/Validate/FindSpecialDecls.cc	(revision 6e7ed0aae5c3d162fadc30a2aad792abe6f1a8a7)
+++ 	(revision )
@@ -1,100 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// FindSpecialDecls.cc --
-//
-// Author           : Rob Schluntz
-// Created On       : Thu Aug 30 09:49:43 2018
-// Last Modified By : Rob Schluntz
-// Last Modified On : Thu Aug 30 09:55:25 2018
-// Update Count     : 2
-//
-
-#include "FindSpecialDecls.h"
-
-#include "Common/PassVisitor.h"
-#include "SynTree/Declaration.h"
-#include "SynTree/Type.h"
-
-// NOTE: currently, it is assumed that every special declaration occurs at the top-level,
-// so function bodies, aggregate bodies, object initializers, etc. are not visited.
-// If this assumption changes, e.g., with the introduction of namespaces, remove the visit_children assignments.
-
-namespace Validate {
-	Type * SizeType = nullptr;
-	FunctionDecl * dereferenceOperator = nullptr;
-	StructDecl * dtorStruct = nullptr;
-	FunctionDecl * dtorStructDestroy = nullptr;
-
-	namespace {
-		struct FindSpecialDecls final : public WithShortCircuiting {
-			void previsit( ObjectDecl * objDecl );
-			void previsit( FunctionDecl * funcDecl );
-			void previsit( StructDecl * structDecl );
-			void previsit( UnionDecl * unionDecl );
-			void previsit( EnumDecl * enumDecl );
-			void previsit( TraitDecl * traitDecl );
-		};
-	} // namespace
-
-	void findSpecialDecls( std::list< Declaration * > &translationUnit ) {
-		PassVisitor<FindSpecialDecls> finder;
-		acceptAll( translationUnit, finder );
-		// TODO: conditionally generate 'fake' declarations for missing features, so that
-		// translation can proceed in the event that builtins, prelude, etc. are missing.
-	}
-
-	namespace {
-		void FindSpecialDecls::previsit( ObjectDecl * ) {
-			visit_children = false;
-		}
-
-		void FindSpecialDecls::previsit( FunctionDecl * funcDecl ) {
-			visit_children = false;
-			if ( ! dereferenceOperator && funcDecl->name == "*?" && funcDecl->linkage == LinkageSpec::Intrinsic ) {
-				// find and remember the intrinsic dereference operator for object pointers
-				FunctionType * ftype = funcDecl->type;
-				if ( ftype->parameters.size() == 1 ) {
-					PointerType * ptrType = strict_dynamic_cast<PointerType *>( ftype->parameters.front()->get_type() );
-					if ( ptrType->base->get_qualifiers() == Type::Qualifiers() ) {
-						TypeInstType * inst = dynamic_cast<TypeInstType *>( ptrType->base );
-						if ( inst && ! inst->get_isFtype() ) {
-							dereferenceOperator = funcDecl;
-						}
-					}
-				}
-			} else if ( ! dtorStructDestroy && funcDecl->name == "__destroy_Destructor" ) {
-				dtorStructDestroy = funcDecl;
-			}
-		}
-
-		void FindSpecialDecls::previsit( StructDecl * structDecl ) {
-			visit_children = false;
-			if ( ! dtorStruct && structDecl->name == "__Destructor" ) {
-				dtorStruct = structDecl;
-			}
-		}
-
-		void FindSpecialDecls::previsit( UnionDecl * ) {
-			visit_children = false;
-		}
-
-		void FindSpecialDecls::previsit( EnumDecl * ) {
-			visit_children = false;
-		}
-
-		void FindSpecialDecls::previsit( TraitDecl * ) {
-			visit_children = false;
-		}
-
-	} // namespace
-} // namespace Validate
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/Validate/FindSpecialDecls.h
===================================================================
--- src/Validate/FindSpecialDecls.h	(revision 6e7ed0aae5c3d162fadc30a2aad792abe6f1a8a7)
+++ src/Validate/FindSpecialDecls.h	(revision 61efa421be36a355b304d2e9b9e14e493947d332)
@@ -16,11 +16,4 @@
 #pragma once
 
-#include <list>  // for list
-
-class Declaration;
-class FunctionDecl;
-class StructDecl;
-class Type;
-
 namespace ast {
 	class TranslationUnit;
@@ -28,18 +21,4 @@
 
 namespace Validate {
-	/// size_t type - set when size_t typedef is seen. Useful in a few places,
-	/// such as in determining array dimension type
-	extern Type * SizeType;
-
-	/// intrinsic dereference operator for unqualified types - set when *? function is seen in FindSpecialDeclarations.
-	/// Useful for creating dereference ApplicationExprs without a full resolver pass.
-	extern FunctionDecl * dereferenceOperator;
-
-	/// special built-in functions and data structures necessary for destructor generation
-	extern StructDecl * dtorStruct;
-	extern FunctionDecl * dtorStructDestroy;
-
-	/// find and remember some of the special declarations that are useful for generating code, so that they do not have to be discovered multiple times.
-	void findSpecialDecls( std::list< Declaration * > & translationUnit );
 
 /// Find and remember some of the special declarations that are useful for
Index: src/Validate/HandleAttributes.cc
===================================================================
--- src/Validate/HandleAttributes.cc	(revision 6e7ed0aae5c3d162fadc30a2aad792abe6f1a8a7)
+++ 	(revision )
@@ -1,87 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// HandleAttributes.cc --
-//
-// Author           : Rob Schluntz
-// Created On       : Fri Jul 27 10:15:06 2018
-// Last Modified By : Rob Schluntz
-// Last Modified On : Fri Jul 27 10:16:43 2018
-// Update Count     : 2
-//
-
-#include "HandleAttributes.h"
-
-#include "CompilationState.h"
-#include "Common/Eval.h"
-#include "Common/PassVisitor.h"
-#include "Common/ToString.hpp"
-#include "Common/SemanticError.h"
-#include "ResolvExpr/Resolver.h"
-#include "SynTree/Attribute.h"
-#include "SynTree/Declaration.h"
-#include "SynTree/Type.h"
-
-namespace Validate {
-	namespace {
-		struct HandleAttributes : public WithIndexer {
-			void previsit( ObjectDecl * decl );
-			void previsit( FunctionDecl * decl );
-		};
-	} // namespace
-
-	void handleAttributes( std::list< Declaration * > &translationUnit ) {
-		PassVisitor<HandleAttributes> handler;
-		acceptAll( translationUnit, handler );
-	}
-
-	namespace {
-		void HandleAttributes::previsit( ObjectDecl * decl ) {
-			for ( Attribute * attr : decl->attributes ) {
-				std::string name = attr->normalizedName();
-				if (name == "init_priority") {
-					// TODO: implement C++-like init_priority attribute
-				}
-			}
-		}
-
-		void HandleAttributes::previsit( FunctionDecl * decl ) {
-			for ( Attribute * attr : decl->attributes ) {
-				std::string name = attr->normalizedName();
-				if (name == "constructor" || name == "destructor") {
-					if (attr->parameters.size() == 1) {
-						Expression *& arg = attr->parameters.front();
-						ResolvExpr::findSingleExpression( arg, new BasicType( Type::Qualifiers(), BasicType::LongLongSignedInt ), indexer );
-						auto result = eval(arg);
-						if (! result.second) {
-							SemanticWarning(attr->location, Warning::GccAttributes,
-								toCString( name, " priorities must be integers from 0 to 65535 inclusive: ", arg ) );
-							return;
-						}
-						auto priority = result.first;
-						if (priority < 101) {
-							SemanticWarning(attr->location, Warning::GccAttributes,
-								toCString( name, " priorities from 0 to 100 are reserved for the implementation" ) );
-						} else if (priority < 201 && ! buildingLibrary()) {
-							SemanticWarning(attr->location, Warning::GccAttributes,
-								toCString( name, " priorities from 101 to 200 are reserved for the implementation" ) );
-						}
-					} else if (attr->parameters.size() > 1) {
-						SemanticWarning(attr->location, Warning::GccAttributes, toCString( "too many arguments to ", name, " attribute" ) );
-					} else {
-						SemanticWarning(attr->location, Warning::GccAttributes, toCString( "too few arguments to ", name, " attribute" ) );
-					}
-				}
-			}
-		}
-	} // namespace
-} // namespace Validate
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/Validate/HandleAttributes.h
===================================================================
--- src/Validate/HandleAttributes.h	(revision 6e7ed0aae5c3d162fadc30a2aad792abe6f1a8a7)
+++ 	(revision )
@@ -1,30 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// HandleAttributes.h --
-//
-// Author           : Rob Schluntz
-// Created On       : Fri Jul 27 10:10:10 2018
-// Last Modified By : Rob Schluntz
-// Last Modified On : Fri Jul 27 10:12:53 2018
-// Update Count     : 2
-//
-
-#pragma once
-
-#include <list>  // for list
-
-class Declaration;
-
-namespace Validate {
-	void handleAttributes( std::list< Declaration * > &translationUnit );
-} // namespace Validate
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/Validate/module.mk
===================================================================
--- src/Validate/module.mk	(revision 6e7ed0aae5c3d162fadc30a2aad792abe6f1a8a7)
+++ src/Validate/module.mk	(revision 61efa421be36a355b304d2e9b9e14e493947d332)
@@ -16,5 +16,4 @@
 
 SRC_VALIDATE = \
-	Validate/FindSpecialDecls.cc \
 	Validate/FindSpecialDecls.h
 
@@ -37,6 +36,4 @@
 	Validate/GenericParameter.cpp \
 	Validate/GenericParameter.hpp \
-	Validate/HandleAttributes.cc \
-	Validate/HandleAttributes.h \
 	Validate/HoistStruct.cpp \
 	Validate/HoistStruct.hpp \
