Index: src/ResolvExpr/CommonType.cc
===================================================================
--- src/ResolvExpr/CommonType.cc	(revision 7f623d6fc2334cda8b26a77d059a48637fb5a398)
+++ src/ResolvExpr/CommonType.cc	(revision c5ac6d50679bfa2c0447315ee7255a5bdfb68af2)
@@ -43,5 +43,4 @@
 
 		void getCommonWithVoidPointer( PointerType* voidPointer, PointerType* otherPointer );
-		template< typename RefType > void handleRefType( RefType *inst, Type *other );
 
 		Type *result;
@@ -126,6 +125,5 @@
 	}
 
-	void CommonType::visit( VoidType *voidType ) {
-	}
+	void CommonType::visit( __attribute((unused)) VoidType *voidType ) {}
 
 	void CommonType::visit( BasicType *basicType ) {
@@ -189,18 +187,8 @@
 	}
 
-	void CommonType::visit( ArrayType *arrayType ) {
-	}
-
-	void CommonType::visit( FunctionType *functionType ) {
-	}
-
-	template< typename RefType > void CommonType::handleRefType( RefType *inst, Type *other ) {
-	}
-
-	void CommonType::visit( StructInstType *aggregateUseType ) {
-	}
-
-	void CommonType::visit( UnionInstType *aggregateUseType ) {
-	}
+	void CommonType::visit( __attribute((unused)) ArrayType *arrayType ) {}
+	void CommonType::visit( __attribute((unused)) FunctionType *functionType ) {}
+	void CommonType::visit( __attribute((unused)) StructInstType *aggregateUseType ) {}
+	void CommonType::visit( __attribute((unused)) UnionInstType *aggregateUseType ) {}
 
 	void CommonType::visit( EnumInstType *enumInstType ) {
@@ -214,5 +202,5 @@
 	}
 
-	void CommonType::visit( TraitInstType *aggregateUseType ) {
+	void CommonType::visit( __attribute((unused)) TraitInstType *aggregateUseType ) {
 	}
 
@@ -239,9 +227,6 @@
 	}
 
-	void CommonType::visit( TupleType *tupleType ) {
-	}
-
-	void CommonType::visit( VarArgsType *varArgsType ) {
-	}
+	void CommonType::visit( __attribute((unused)) TupleType *tupleType ) {}
+	void CommonType::visit( __attribute((unused)) VarArgsType *varArgsType ) {}
 
 	void CommonType::visit( ZeroType *zeroType ) {
Index: src/ResolvExpr/ConversionCost.cc
===================================================================
--- src/ResolvExpr/ConversionCost.cc	(revision 7f623d6fc2334cda8b26a77d059a48637fb5a398)
+++ src/ResolvExpr/ConversionCost.cc	(revision c5ac6d50679bfa2c0447315ee7255a5bdfb68af2)
@@ -149,5 +149,5 @@
 	};
 
-	void ConversionCost::visit(VoidType *voidType) {
+	void ConversionCost::visit( __attribute((unused)) VoidType *voidType ) {
 		cost = Cost::infinity;
 	}
@@ -186,9 +186,6 @@
 	}
 
-	void ConversionCost::visit(ArrayType *arrayType) {
-	}
-
-	void ConversionCost::visit(FunctionType *functionType) {
-	}
+	void ConversionCost::visit(__attribute((unused)) ArrayType *arrayType) {}
+	void ConversionCost::visit(__attribute((unused)) FunctionType *functionType) {}
 
 	void ConversionCost::visit(StructInstType *inst) {
@@ -208,5 +205,5 @@
 	}
 
-	void ConversionCost::visit(EnumInstType *inst) {
+	void ConversionCost::visit( __attribute((unused)) EnumInstType *inst ) {
 		static Type::Qualifiers q;
 		static BasicType integer( q, BasicType::SignedInt );
@@ -217,5 +214,5 @@
 	}
 
-	void ConversionCost::visit(TraitInstType *inst) {
+	void ConversionCost::visit( __attribute((unused)) TraitInstType *inst) {
 	}
 
@@ -239,5 +236,5 @@
 	}
 
-	void ConversionCost::visit(TupleType *tupleType) {
+	void ConversionCost::visit( __attribute((unused)) TupleType *tupleType) {
 		Cost c;
 		if ( TupleType *destAsTuple = dynamic_cast< TupleType* >( dest ) ) {
@@ -259,5 +256,5 @@
 	}
 
-	void ConversionCost::visit(VarArgsType *varArgsType) {
+	void ConversionCost::visit( __attribute((unused)) VarArgsType *varArgsType) {
 		if ( dynamic_cast< VarArgsType* >( dest ) ) {
 			cost = Cost::zero;
@@ -265,5 +262,5 @@
 	}
 
-	void ConversionCost::visit(ZeroType *zeroType) {
+	void ConversionCost::visit( __attribute((unused)) ZeroType *zeroType) {
 		if ( dynamic_cast< ZeroType* >( dest ) ) {
 			cost = Cost::zero;
@@ -281,5 +278,5 @@
 	}
 
-	void ConversionCost::visit(OneType *oneType) {
+	void ConversionCost::visit( __attribute((unused)) OneType *oneType) {
 		if ( dynamic_cast< OneType* >( dest ) ) {
 			cost = Cost::zero;
Index: src/ResolvExpr/PtrsAssignable.cc
===================================================================
--- src/ResolvExpr/PtrsAssignable.cc	(revision 7f623d6fc2334cda8b26a77d059a48637fb5a398)
+++ src/ResolvExpr/PtrsAssignable.cc	(revision c5ac6d50679bfa2c0447315ee7255a5bdfb68af2)
@@ -63,8 +63,7 @@
 	}
 
-	PtrsAssignable::PtrsAssignable( Type *dest, const TypeEnvironment &env ) : dest( dest ), result( 0 ), env( env ) {
-	}
+	PtrsAssignable::PtrsAssignable( Type *dest, const TypeEnvironment &env ) : dest( dest ), result( 0 ), env( env ) {}
 
-	void PtrsAssignable::visit( VoidType *voidType ) {
+	void PtrsAssignable::visit( __attribute((unused)) VoidType *voidType ) {
 		if ( dynamic_cast< FunctionType* >( dest ) ) {
 			result = 0;
@@ -74,24 +73,13 @@
 	}
 
-	void PtrsAssignable::visit( BasicType *basicType ) {
-	}
-
-	void PtrsAssignable::visit( PointerType *pointerType ) {
-	}
-
-	void PtrsAssignable::visit( ArrayType *arrayType ) {
-	}
-
-	void PtrsAssignable::visit( FunctionType *functionType ) {
+	void PtrsAssignable::visit( __attribute__((unused)) BasicType *basicType ) {}
+	void PtrsAssignable::visit( __attribute__((unused)) PointerType *pointerType ) {}
+	void PtrsAssignable::visit( __attribute__((unused)) ArrayType *arrayType ) {}
+	void PtrsAssignable::visit( __attribute__((unused)) FunctionType *functionType ) {
 		result = -1;
 	}
 
-	void PtrsAssignable::visit( StructInstType *inst ) {
-		// I don't think we should be doing anything here, but I'm willing to admit that I might be wrong
-	}
-
-	void PtrsAssignable::visit( UnionInstType *inst ) {
-		// I don't think we should be doing anything here, but I'm willing to admit that I might be wrong
-	}
+	void PtrsAssignable::visit(  __attribute__((unused)) StructInstType *inst ) {}
+	void PtrsAssignable::visit(  __attribute__((unused)) UnionInstType *inst ) {}
 
 	void PtrsAssignable::visit( EnumInstType *inst ) {
@@ -103,8 +91,5 @@
 	}
 
-	void PtrsAssignable::visit( TraitInstType *inst ) {
-		// I definitely don't think we should be doing anything here
-	}
-
+	void PtrsAssignable::visit(  __attribute__((unused)) TraitInstType *inst ) {}
 	void PtrsAssignable::visit( TypeInstType *inst ) {
 		EqvClass eqvClass;
@@ -116,37 +101,8 @@
 	}
 
-	void PtrsAssignable::visit( TupleType *tupleType ) {
-///  // This code doesn't belong here, but it might be useful somewhere else
-///   if ( TupleType *destAsTuple = dynamic_cast< TupleType* >( dest ) ) {
-///     int ret = 0;
-///     std::list< Type* >::const_iterator srcIt = tupleType->get_types().begin();
-///     std::list< Type* >::const_iterator destIt = destAsTuple->get_types().begin();
-///     while ( srcIt != tupleType->get_types().end() && destIt != destAsTuple->get_types().end() ) {
-///       int assignResult = ptrsAssignable( *srcIt++, *destIt++ );
-///       if ( assignResult == 0 ) {
-///         result = assignResult;
-///         return;
-///       } else if ( assignResult < 0 ) {
-///         ret = -1;
-///       } else if ( ret > 0 ) {
-///         ret += assignResult;
-///       }
-///     }
-///     if ( srcIt == tupleType->get_types().end() && destIt == destAsTuple->get_types().end() ) {
-///       result = ret;
-///     } else {
-///       result = 0;
-///     }
-///   }
-	}
-
-	void PtrsAssignable::visit( VarArgsType *varArgsType ) {
-	}
-
-	void PtrsAssignable::visit( ZeroType *zeroType ) {
-	}
-	
-	void PtrsAssignable::visit( OneType *oneType ) {
-	}
+	void PtrsAssignable::visit(  __attribute__((unused)) TupleType *tupleType ) {}
+	void PtrsAssignable::visit(  __attribute__((unused)) VarArgsType *varArgsType ) {}
+	void PtrsAssignable::visit(  __attribute__((unused)) ZeroType *zeroType ) {}
+	void PtrsAssignable::visit(  __attribute__((unused)) OneType *oneType ) {}
 	
 } // namespace ResolvExpr
Index: src/ResolvExpr/PtrsCastable.cc
===================================================================
--- src/ResolvExpr/PtrsCastable.cc	(revision 7f623d6fc2334cda8b26a77d059a48637fb5a398)
+++ src/ResolvExpr/PtrsCastable.cc	(revision c5ac6d50679bfa2c0447315ee7255a5bdfb68af2)
@@ -92,34 +92,34 @@
 	}
 
-	void PtrsCastable::visit(VoidType *voidType) {
+	void PtrsCastable::visit( __attribute__((unused)) VoidType *voidType) {
 		result = objectCast( dest, env, indexer );
 	}
 
-	void PtrsCastable::visit(BasicType *basicType) {
+	void PtrsCastable::visit( __attribute__((unused)) BasicType *basicType) {
 		result = objectCast( dest, env, indexer );
 	}
 
-	void PtrsCastable::visit(PointerType *pointerType) {
+	void PtrsCastable::visit( __attribute__((unused)) PointerType *pointerType) {
 		result = objectCast( dest, env, indexer );
 	}
 
-	void PtrsCastable::visit(ArrayType *arrayType) {
+	void PtrsCastable::visit( __attribute__((unused)) ArrayType *arrayType) {
 		result = objectCast( dest, env, indexer );
 	}
 
-	void PtrsCastable::visit(FunctionType *functionType) {
+	void PtrsCastable::visit( __attribute__((unused)) FunctionType *functionType) {
 		// result = -1;
 		result = functionCast( dest, env, indexer );
 	}
 
-	void PtrsCastable::visit(StructInstType *inst) {
+	void PtrsCastable::visit( __attribute__((unused)) StructInstType *inst) {
 		result = objectCast( dest, env, indexer );
 	}
 
-	void PtrsCastable::visit(UnionInstType *inst) {
+	void PtrsCastable::visit( __attribute__((unused)) UnionInstType *inst) {
 		result = objectCast( dest, env, indexer );
 	}
 
-	void PtrsCastable::visit(EnumInstType *inst) {
+	void PtrsCastable::visit( __attribute__((unused)) EnumInstType *inst) {
 		if ( dynamic_cast< EnumInstType* >( dest ) ) {
 			result = 1;
@@ -144,17 +144,17 @@
 	}
 
-	void PtrsCastable::visit(TupleType *tupleType) {
+	void PtrsCastable::visit( __attribute__((unused)) TupleType *tupleType) {
 		result = objectCast( dest, env, indexer );
 	}
 
-	void PtrsCastable::visit(VarArgsType *varArgsType) {
+	void PtrsCastable::visit( __attribute__((unused)) VarArgsType *varArgsType) {
 		result = objectCast( dest, env, indexer );
 	}
 
-	void PtrsCastable::visit(ZeroType *zeroType) {
+	void PtrsCastable::visit( __attribute__((unused)) ZeroType *zeroType) {
 		result = objectCast( dest, env, indexer );
 	}
 
-	void PtrsCastable::visit(OneType *oneType) {
+	void PtrsCastable::visit( __attribute__((unused)) OneType *oneType) {
 		result = objectCast( dest, env, indexer );
 	}
Index: src/ResolvExpr/TypeMap.h
===================================================================
--- src/ResolvExpr/TypeMap.h	(revision 7f623d6fc2334cda8b26a77d059a48637fb5a398)
+++ src/ResolvExpr/TypeMap.h	(revision c5ac6d50679bfa2c0447315ee7255a5bdfb68af2)
@@ -110,5 +110,5 @@
 			}
 
-			virtual void visit( VoidType *voidType ) {
+			virtual void visit( __attribute__((unused)) VoidType *voidType ) {
 				findAndReplace( typeMap.voidValue );
 			}
@@ -138,5 +138,5 @@
 			}
 
-			virtual void visit( FunctionType *functionType ) {
+			virtual void visit( __attribute__((unused)) FunctionType *functionType ) {
 				findAndReplace( typeMap.functionPointerValue );
 			}
Index: src/ResolvExpr/typeops.h
===================================================================
--- src/ResolvExpr/typeops.h	(revision 7f623d6fc2334cda8b26a77d059a48637fb5a398)
+++ src/ResolvExpr/typeops.h	(revision c5ac6d50679bfa2c0447315ee7255a5bdfb68af2)
@@ -132,16 +132,4 @@
 	}
 
-	template< typename Container1, typename Container2 >
-	bool typesCompatibleList( Container1 &c1, Container2 &c2, const SymTab::Indexer &indexer, const TypeEnvironment &env ) {
-		typename Container1::iterator i1 = c1.begin();
-		typename Container2::iterator i2 = c2.begin();
-		for ( ; i1 != c1.end() && i2 != c2.end(); ++i1, ++i2 ) {
-			if ( ! typesCompatible( *i1, *i2, indexer ) ) {
-				return false;
-			} // if
-		}
-		return ( i1 == c1.end() ) && ( i2 == c2.end() );
-	}
-
 	/// creates the type represented by the list of returnVals in a FunctionType. The caller owns the return value.
 	Type * extractResultType( FunctionType * functionType );
