Index: src/Common/PassVisitor.proto.h
===================================================================
--- src/Common/PassVisitor.proto.h	(revision 10cfad9d3d9c4cef2b74f4ef3fab06d8cbe04ae5)
+++ src/Common/PassVisitor.proto.h	(revision a8de0f43c07600d7d0acf27c4541586b16bc783a)
@@ -47,5 +47,5 @@
 
 	operator bool() { return m_ref ? *m_ref : true; }
-	bool operator=( bool val ) { return *m_ref = val; }
+	bool operator=( bool val ) { assert(m_ref); return *m_ref = val; }
 
 private:
@@ -53,7 +53,7 @@
 	friend class ChildrenGuard;
 
-	bool * set( bool & val ) {
+	bool * set( bool * val ) {
 		bool * prev = m_ref;
-		m_ref = &val;
+		m_ref = val;
 		return prev;
 	}
@@ -67,5 +67,5 @@
 	ChildrenGuard( bool_ref * ref )
 		: m_val ( true )
-		, m_prev( ref ? ref->set( m_val ) : nullptr )
+		, m_prev( ref ? ref->set( &m_val ) : nullptr )
 		, m_ref ( ref )
 	{}
@@ -73,5 +73,5 @@
 	~ChildrenGuard() {
 		if( m_ref ) {
-			m_ref->set( *m_prev );
+			m_ref->set( m_prev );
 		}
 	}
