(*From Cminorgenproof*)
Remark val_inject_function_pointer:
forall v fd j tv,
Genv.find_funct ge v = Some fd ->
globalfunction_ptr_inject j ->
val_inject j v tv ->
tv = v.
(** Correctness of the code generated by [add_move]. *)

Lemma tr_move_correct:
forall r1 ns r2 nd cs f sp rs m,
tr_move f.(fn_code) ns r1 nd r2 ->
exists rs',
corestep_star rtl_eff_sem tge
(RTL_State cs f sp ns rs) m
(RTL_State cs f sp nd rs') m /\
rs'#r2 = rs#r1 /\
(forall r, r <> r2 -> rs'#r = rs#r).