End CMCONSTR.
(** Recognition of calls to built-in functions *)

(* Specifications: *)
Lemma expr_is_addrof_ident_correct:
forall e id,
expr_is_addrof_ident e = Some id ->
e = Cminor.Econst (Cminor.Oaddrsymbol id Ptrofs.zero).
Lemma classify_call_correct:
forall unit sp e m a v fd,
linkorder unit prog ->
Cminor.eval_expr ge sp e m a v ->
Genv.find_funct ge v = Some fd ->
match classify_call (prog_defmap unit) a with
| Call_default => True
| Call_imm id => exists b, Genv.find_symbol ge id = Some b /\ v = Vptr b Ptrofs.zero
| Call_builtin ef => fd = External ef
end.