Index: src/CodeGen/CodeGenerator.cpp
===================================================================
--- src/CodeGen/CodeGenerator.cpp	(revision a4ed165b3fb9a999f66e8ec4607eebc231a3ebfe)
+++ src/CodeGen/CodeGenerator.cpp	(revision 61e362feab9ac30e7e3748f946b2cf384102b37b)
@@ -1135,5 +1135,5 @@
 		if ( clause->when_cond ) {
 			output << "when(";
-			stmt->timeout_cond->accept( *visitor );
+			clause->when_cond->accept( *visitor );
 			output << ") ";
 		}
Index: src/InitTweak/FixInit.cpp
===================================================================
--- src/InitTweak/FixInit.cpp	(revision a4ed165b3fb9a999f66e8ec4607eebc231a3ebfe)
+++ src/InitTweak/FixInit.cpp	(revision 61e362feab9ac30e7e3748f946b2cf384102b37b)
@@ -1176,5 +1176,4 @@
 		throw errors;
 	}
-	// return funcDecl;
 	return function;
 }
Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision a4ed165b3fb9a999f66e8ec4607eebc231a3ebfe)
+++ src/Parser/ExpressionNode.cc	(revision 61e362feab9ac30e7e3748f946b2cf384102b37b)
@@ -673,6 +673,6 @@
 		ast::LogicalFlag flag ) {
 	return new ast::LogicalExpr( location,
-		notZeroExpr( maybeMoveBuild( expr_node1 ) ),
-		notZeroExpr( maybeMoveBuild( expr_node2 ) ),
+		maybeMoveBuild( expr_node1 ),
+		maybeMoveBuild( expr_node2 ),
 		flag
 	);
@@ -713,5 +713,5 @@
 		ExpressionNode * expr_node3 ) {
 	return new ast::ConditionalExpr( location,
-		notZeroExpr( maybeMoveBuild( expr_node1 ) ),
+		maybeMoveBuild( expr_node1 ),
 		maybeMoveBuild( expr_node2 ),
 		maybeMoveBuild( expr_node3 )
Index: src/Parser/parserutility.cc
===================================================================
--- src/Parser/parserutility.cc	(revision a4ed165b3fb9a999f66e8ec4607eebc231a3ebfe)
+++ src/Parser/parserutility.cc	(revision 61e362feab9ac30e7e3748f946b2cf384102b37b)
@@ -27,5 +27,5 @@
 //    if ( (int)(x != 0) ) ...
 
-ast::Expr * notZeroExpr( ast::Expr * orig ) {
+ast::Expr * notZeroExpr( const ast::Expr * orig ) {
 	return ( !orig ) ? nullptr : new ast::CastExpr( orig->location,
 		ast::UntypedExpr::createCall( orig->location,
Index: src/Parser/parserutility.h
===================================================================
--- src/Parser/parserutility.h	(revision a4ed165b3fb9a999f66e8ec4607eebc231a3ebfe)
+++ src/Parser/parserutility.h	(revision 61e362feab9ac30e7e3748f946b2cf384102b37b)
@@ -21,5 +21,5 @@
 }
 
-ast::Expr * notZeroExpr( ast::Expr *orig );
+ast::Expr * notZeroExpr( const ast::Expr *orig );
 
 template< typename T >
Index: src/ResolvExpr/CandidateFinder.cpp
===================================================================
--- src/ResolvExpr/CandidateFinder.cpp	(revision a4ed165b3fb9a999f66e8ec4607eebc231a3ebfe)
+++ src/ResolvExpr/CandidateFinder.cpp	(revision 61e362feab9ac30e7e3748f946b2cf384102b37b)
@@ -46,4 +46,5 @@
 #include "AST/Type.hpp"
 #include "Common/utility.h"       // for move, copy
+#include "Parser/parserutility.h" // for notZeroExpr
 #include "SymTab/Mangler.h"
 #include "Tuples/Tuples.h"        // for handleTupleAssignment
@@ -1502,9 +1503,11 @@
 	void Finder::postvisit( const ast::LogicalExpr * logicalExpr ) {
 		CandidateFinder finder1( context, tenv );
-		finder1.find( logicalExpr->arg1, ResolveMode::withAdjustment() );
+		ast::ptr<ast::Expr> arg1 = notZeroExpr( logicalExpr->arg1 );
+		finder1.find( arg1, ResolveMode::withAdjustment() );
 		if ( finder1.candidates.empty() ) return;
 
 		CandidateFinder finder2( context, tenv );
-		finder2.find( logicalExpr->arg2, ResolveMode::withAdjustment() );
+		ast::ptr<ast::Expr> arg2 = notZeroExpr( logicalExpr->arg2 );
+		finder2.find( arg2, ResolveMode::withAdjustment() );
 		if ( finder2.candidates.empty() ) return;
 
@@ -1532,5 +1535,6 @@
 		// candidates for condition
 		CandidateFinder finder1( context, tenv );
-		finder1.find( conditionalExpr->arg1, ResolveMode::withAdjustment() );
+		ast::ptr<ast::Expr> arg1 = notZeroExpr( conditionalExpr->arg1 );
+		finder1.find( arg1, ResolveMode::withAdjustment() );
 		if ( finder1.candidates.empty() ) return;
 
Index: src/main.cc
===================================================================
--- src/main.cc	(revision a4ed165b3fb9a999f66e8ec4607eebc231a3ebfe)
+++ src/main.cc	(revision 61e362feab9ac30e7e3748f946b2cf384102b37b)
@@ -82,5 +82,5 @@
 #include "Validate/ReturnCheck.hpp"         // for checkReturnStatements
 #include "Validate/VerifyCtorDtorAssign.hpp" // for verifyCtorDtorAssign
-#include "Validate/ReplacePseudoFunc.hpp"
+#include "Validate/ReplacePseudoFunc.hpp"   // for replacePseudoFunc
 #include "Virtual/ExpandCasts.h"            // for expandCasts
 #include "Virtual/VirtualDtor.hpp"          // for implementVirtDtors
