diff --git a/src/plugins/dive/build.ml b/src/plugins/dive/build.ml
index 4463838589f4a0439ed9f8b870d4eeac81396dbb..bd8b9d0102817d545b218ca302a0fb216c910e2c 100644
--- a/src/plugins/dive/build.ml
+++ b/src/plugins/dive/build.ml
@@ -200,12 +200,17 @@ let enumerate_cells ~is_folded_base ~limit lval kinstr =
   with Abstract_interp.Error_Top -> raise Unknown_location
 
 let build_node_kind ~is_folded_base lval kinstr =
-  match enumerate_cells ~is_folded_base ~limit:1 lval kinstr with
-  | [node_kind] -> node_kind
-  | [] (* happens if kinstr is dead code *) -> Scattered (lval, kinstr)
-  | _ -> assert false
-  | exception (Too_many_deps _) -> Scattered (lval, kinstr)
-  | exception Unknown_location -> Unknown (lval, kinstr)
+  match lval with
+  | Var vi, offset ->
+    (* Build a scalar node even if kinstr is dead *)
+    Scalar (vi, Cil.typeOfLval lval, offset)
+  | Mem _, _ ->
+    match enumerate_cells ~is_folded_base ~limit:1 lval kinstr with
+    | [node_kind] -> node_kind
+    | [] (* happens if kinstr is dead code *) -> Scattered (lval, kinstr)
+    | _ -> assert false
+    | exception (Too_many_deps _) -> Scattered (lval, kinstr)
+    | exception Unknown_location -> Unknown (lval, kinstr)
 
 let default_node_locality callstack =
   match callstack with