Index: src/ResolvExpr/CommonType.cc
===================================================================
--- src/ResolvExpr/CommonType.cc	(revision 8c84ebde3a7ebf0cf2619525ce0d94191f1d49fc)
+++ src/ResolvExpr/CommonType.cc	(revision db4977a40d5da006bc537019085e0faa0ef2c736)
@@ -138,8 +138,8 @@
 	void CommonType::visit( PointerType *pointerType ) {
 		if ( PointerType *otherPointer = dynamic_cast< PointerType* >( type2 ) ) {
-			if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) ) {
+			if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) && ! isFtype(pointerType->get_base(), indexer) ) {
 				result = otherPointer->clone();
 				result->get_qualifiers() += pointerType->get_qualifiers();
-			} else if ( widenSecond && dynamic_cast< VoidType* >( pointerType->get_base() ) ) {
+			} else if ( widenSecond && dynamic_cast< VoidType* >( pointerType->get_base() ) && ! isFtype(otherPointer->get_base(), indexer) ) {
 				result = pointerType->clone();
 				result->get_qualifiers() += otherPointer->get_qualifiers();
Index: src/ResolvExpr/typeops.h
===================================================================
--- src/ResolvExpr/typeops.h	(revision 8c84ebde3a7ebf0cf2619525ce0d94191f1d49fc)
+++ src/ResolvExpr/typeops.h	(revision db4977a40d5da006bc537019085e0faa0ef2c736)
@@ -117,4 +117,5 @@
 
 	// in Unify.cc
+	bool isFtype( Type *type, const SymTab::Indexer &indexer );
 	bool typesCompatible( Type *, Type *, const SymTab::Indexer &indexer, const TypeEnvironment &env );
 	bool typesCompatibleIgnoreQualifiers( Type *, Type *, const SymTab::Indexer &indexer, const TypeEnvironment &env );
