let cond mem e =
match (Cil.stripInfo e).enode with
| BinOp (op, e1, e2, ty) ->
cond_binop mem op ty e1 (Cil.typeOf e1) e2 (Cil.typeOf e2)
| UnOp (op, e1, ty) ->
cond_unop mem op ty e1 (Cil.typeOf e1)
| _ -> boolean_of_value (expr mem e)