Index: src/SymTab/FixFunction.cc
===================================================================
--- src/SymTab/FixFunction.cc	(revision 98735ef93efbdeff0d764e4f0c39fc14c31e1f6b)
+++ src/SymTab/FixFunction.cc	(revision 44b70880e982c036e8482060172be8e37b709925)
@@ -72,4 +72,8 @@
 		return tupleType;
 	}
+
+	Type * FixFunction::mutate(VarArgsType *varArgsType) {
+		return varArgsType;
+	}
 } // namespace SymTab
 
Index: src/SymTab/FixFunction.h
===================================================================
--- src/SymTab/FixFunction.h	(revision 98735ef93efbdeff0d764e4f0c39fc14c31e1f6b)
+++ src/SymTab/FixFunction.h	(revision 44b70880e982c036e8482060172be8e37b709925)
@@ -41,4 +41,5 @@
 		virtual Type* mutate(TypeInstType *aggregateUseType);
 		virtual Type* mutate(TupleType *tupleType);
+		virtual Type* mutate(VarArgsType *varArgsType);
   
 		bool isVoid;
Index: src/SymTab/ImplementationType.cc
===================================================================
--- src/SymTab/ImplementationType.cc	(revision 98735ef93efbdeff0d764e4f0c39fc14c31e1f6b)
+++ src/SymTab/ImplementationType.cc	(revision 44b70880e982c036e8482060172be8e37b709925)
@@ -40,4 +40,5 @@
 		virtual void visit(TypeInstType *aggregateUseType);
 		virtual void visit(TupleType *tupleType);
+		virtual void visit(VarArgsType *varArgsType);
 
 		Type *result;			// synthesized
@@ -116,4 +117,7 @@
 		result = newType;
 	}
+
+	void ImplementationType::visit(VarArgsType *varArgsType) {
+	}
 } // namespace SymTab
 
Index: src/SymTab/Mangler.cc
===================================================================
--- src/SymTab/Mangler.cc	(revision 98735ef93efbdeff0d764e4f0c39fc14c31e1f6b)
+++ src/SymTab/Mangler.cc	(revision 44b70880e982c036e8482060172be8e37b709925)
@@ -224,4 +224,8 @@
 		acceptAll( tupleType->get_types(), *this );
 		mangleName << "_";
+	}
+
+	void Mangler::visit( VarArgsType *varArgsType ) {
+		mangleName << "VARGS";
 	}
 
Index: src/SymTab/Mangler.h
===================================================================
--- src/SymTab/Mangler.h	(revision 98735ef93efbdeff0d764e4f0c39fc14c31e1f6b)
+++ src/SymTab/Mangler.h	(revision 44b70880e982c036e8482060172be8e37b709925)
@@ -45,4 +45,5 @@
 		virtual void visit( TypeInstType *aggregateUseType );
 		virtual void visit( TupleType *tupleType );
+		virtual void visit( VarArgsType *varArgsType );
   
 		std::string get_mangleName() { return mangleName.str(); }
Index: src/SymTab/TypeEquality.cc
===================================================================
--- src/SymTab/TypeEquality.cc	(revision 98735ef93efbdeff0d764e4f0c39fc14c31e1f6b)
+++ src/SymTab/TypeEquality.cc	(revision 44b70880e982c036e8482060172be8e37b709925)
@@ -41,4 +41,5 @@
 		virtual void visit( EnumInstType *enumInst );
 		virtual void visit( TypeInstType *typeInst );
+		virtual void visit( VarArgsType *varArgsType );
 
 		void handleQualifiers( Type * t );
@@ -191,3 +192,10 @@
 		}
 	}
+
+	void TypeEquality::visit( VarArgsType *varArgsType ) {
+		// don't handle qualifiers; var args pack shouldn't have any
+		if ( ! dynamic_cast< VarArgsType * >( other ) ) {
+			result = false;
+		}
+	}
 } // namespace SymTab
