let get_divmod_assertion
~simplify_constants:simplify_constants
~warning:warning
divisor_expr =
let badValDivisor = Int64.zero
in let assertion () =
let term = translate_C_expr_to_term divisor_expr
in Logic_const.prel (Rneq, term, Cil.lconstant badValDivisor)
in if simplify_constants then (
match get_expr_val divisor_expr with
| None ->
[ (assertion (), None) ]
| Some v64 ->
if Int64.compare v64 badValDivisor = 0 then
let assertion = assertion ()
in
if warning then
rte_warn "divisor assert broken: %a" d_predicate_named assertion
;
[ (assertion, Some (make_check_false ())) ]
else
[]
) else [ (assertion (), None) ]