let doGuard s e _t =
let interpreted_e = !Values_To_Use.access_expr s e in
let t1 = unrollType (typeOf e) in
let do_then, do_else =
if isIntegralType t1 || isPointerType t1
then Cvalue.V.contains_non_zero interpreted_e,
Cvalue.V.contains_zero interpreted_e
else true, true (* TODO: a float condition is true iff != 0.0 *)
in
(if do_then
then Dataflow.GDefault
else Dataflow.GUnreachable),
(if do_else
then Dataflow.GDefault
else Dataflow.GUnreachable)