diff --git a/clangml-transforms/for_memcad.ml b/clangml-transforms/for_memcad.ml
index 3ef65adc84cd3efc1fef99b89f0e49f4e12581cc..98a80ad28d56329e8e515387eef7b7044999b82d 100644
--- a/clangml-transforms/for_memcad.ml
+++ b/clangml-transforms/for_memcad.ml
@@ -211,6 +211,8 @@ with type 'a Applicative.t = 'a Applicative.t = struct
                     (Clang.Ast.DeclRef (Clang.Ast.identifier_name var_name));
                 kind = Assign; rhs = init }}} in
             close_stmts init_stmts [decl; init]
+        | { desc = Do { body; cond = { desc = IntegerLiteral (Int 0); _ }; _ }; _} ->
+          [  close_node (Visit.visit [%refl: Clang.Ast.stmt] [] body env) ]
         | { desc = Do { body; cond; _ }; _} ->
             let cond, cond_stmts =
               Visit.visit [%refl: Clang.Ast.expr] []