diff --git a/src/treeopt.in b/src/treeopt.in
index 3e88599357f49f8ca12d76f26dbc5c6ff06bcecc..71bae72c1fd8f5cd5529b383c8c64f37c9014c72 100644
--- a/src/treeopt.in
+++ b/src/treeopt.in
@@ -858,7 +858,7 @@ F_LAND(0 = F_ASSIGN(*, +[node_is_true($$)]), 2):
 F_LAND(0 = F_ASSIGN(*, +[node_is_false($$)]), *):
   $0;
 
-F_LAND(F_COMMA_EXPR(0, 1), 2):
+F_LAND(F_COMMA_EXPR(0, 1[$$->token != F_POP_VALUE]), 2):
   F_COMMA_EXPR($0, F_LAND($1, $2));
 
 F_LAND(+[node_is_true($$)], 0):