Index: src/Common/PassVisitor.h
===================================================================
--- src/Common/PassVisitor.h	(revision 33218c6845f9825be5a63043ef89bb8a0a80d009)
+++ src/Common/PassVisitor.h	(revision a04ce4de453860befe2dfd49923d3ef853195a5e)
@@ -81,4 +81,5 @@
 	virtual void visit( NameExpr *nameExpr ) override final;
 	virtual void visit( CastExpr *castExpr ) override final;
+	virtual void visit( VirtualCastExpr *castExpr ) override final;
 	virtual void visit( AddressExpr *addressExpr ) override final;
 	virtual void visit( LabelAddressExpr *labAddressExpr ) override final;
@@ -168,4 +169,5 @@
 	virtual Expression* mutate( LabelAddressExpr *labAddressExpr ) override final;
 	virtual Expression* mutate( CastExpr *castExpr ) override final;
+	virtual Expression* mutate( VirtualCastExpr *castExpr ) override final;
 	virtual Expression* mutate( UntypedMemberExpr *memberExpr ) override final;
 	virtual Expression* mutate( MemberExpr *memberExpr ) override final;
Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision 33218c6845f9825be5a63043ef89bb8a0a80d009)
+++ src/Common/PassVisitor.impl.h	(revision a04ce4de453860befe2dfd49923d3ef853195a5e)
@@ -607,4 +607,9 @@
 
 template< typename pass_type >
+void PassVisitor< pass_type >::visit( VirtualCastExpr * node ) {
+	VISIT_BODY( node );
+}
+
+template< typename pass_type >
 void PassVisitor< pass_type >::visit( AddressExpr * node ) {
 	VISIT_BODY( node );
@@ -979,4 +984,9 @@
 
 template< typename pass_type >
+Expression * PassVisitor< pass_type >::mutate( VirtualCastExpr * node ) {
+	MUTATE_BODY( Expression, node );
+}
+
+template< typename pass_type >
 Expression * PassVisitor< pass_type >::mutate( UntypedMemberExpr * node ) {
 	MUTATE_BODY( Expression, node );
