Index: src/Common/Assert.cc
===================================================================
--- src/Common/Assert.cc	(revision 02fdb8eb4c22b14a7fc7116a96f53d73dae71205)
+++ src/Common/Assert.cc	(revision a300e4a85b7745f590bfbef5fc5182df7a469c97)
@@ -39,4 +39,14 @@
 }
 
+void abort(const char *fmt, ...	) noexcept __attribute__((noreturn, format(printf, 1, 2)));
+void abort(const char *fmt, ...	) noexcept {
+	va_list args;
+	va_start( args, fmt );
+	vfprintf( stderr, fmt, args );
+	va_end( args );
+	fprintf( stderr, "\n" );
+	abort();
+}
+
 // Local Variables: //
 // tab-width: 4 //
Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision 02fdb8eb4c22b14a7fc7116a96f53d73dae71205)
+++ src/Common/PassVisitor.impl.h	(revision a300e4a85b7745f590bfbef5fc5182df7a469c97)
@@ -20,5 +20,7 @@
 
 #define MUTATE_END( type, node )                \
-	return call_postmutate< type * >( node ); \
+	auto __return = call_postmutate< type * >( node ); \
+	assert( __return ); \
+	return __return;
 
 
Index: src/Common/PassVisitor.proto.h
===================================================================
--- src/Common/PassVisitor.proto.h	(revision 02fdb8eb4c22b14a7fc7116a96f53d73dae71205)
+++ src/Common/PassVisitor.proto.h	(revision a300e4a85b7745f590bfbef5fc5182df7a469c97)
@@ -174,4 +174,6 @@
 FIELD_PTR( PassVisitor<pass_type> * const, visitor )
 
+#undef FIELD_PTR
+
 //---------------------------------------------------------
 // Indexer
