diff --git a/src/kernel_services/ast_queries/cil.ml b/src/kernel_services/ast_queries/cil.ml
index 2c8dab8b7931976c30b43584a67d1c9e178483d0..9a3e8911726f68894414bd7f730c20a483036105 100644
--- a/src/kernel_services/ast_queries/cil.ml
+++ b/src/kernel_services/ast_queries/cil.ml
@@ -3370,7 +3370,6 @@ and childrenExp (vis: cilVisitor) (e: exp) : exp =
 
  (* visit all nodes in a Cil statement tree in preorder *)
  and visitCilStmt (vis:cilVisitor) (s: stmt) : stmt =
-   let ghost = s.ghost in
    let oldloc = CurrentLoc.get () in
    CurrentLoc.set (Stmt.loc s) ;
    vis#push_stmt s; (*(vis#behavior.memo_stmt s);*)
@@ -3379,6 +3378,7 @@ and childrenExp (vis: cilVisitor) (e: exp) : exp =
    let res =
      doVisitCil vis
        vis#behavior.memo_stmt vis#vstmt (childrenStmt toPrepend) s in
+   let ghost = res.ghost in
    (* Now see if we have saved some instructions *)
    toPrepend := !toPrepend @ vis#unqueueInstr ();
    (match !toPrepend with