Section TRANSL_LABEL.
Remark mk_mov_label:
forall rd rs k c, mk_mov rd rs k = OK c -> tail_nolabel k c.
Hint Resolve mk_mov_label: labels.
Remark mk_shrximm_label:
forall n k c, mk_shrximm n k = OK c -> tail_nolabel k c.
Hint Resolve mk_shrximm_label: labels.
Remark mk_shrxlimm_label:
forall n k c, mk_shrxlimm n k = OK c -> tail_nolabel k c.
Hint Resolve mk_shrxlimm_label: labels.
Remark mk_intconv_label:
forall f r1 r2 k c, mk_intconv f r1 r2 k = OK c ->
(forall r r', nolabel (f r r')) ->
tail_nolabel k c.
Hint Resolve mk_intconv_label: labels.
Remark mk_storebyte_label:
forall addr r k c, mk_storebyte addr r k = OK c -> tail_nolabel k c.
Hint Resolve mk_storebyte_label: labels.
Remark loadind_label:
forall base ofs ty dst k c,
loadind base ofs ty dst k = OK c ->
tail_nolabel k c.
Remark storeind_label:
forall base ofs ty src k c,
storeind src base ofs ty k = OK c ->
tail_nolabel k c.
Remark mk_setcc_base_label:
forall xc rd k,
tail_nolabel k (mk_setcc_base xc rd k).
Remark mk_setcc_label:
forall xc rd k,
tail_nolabel k (mk_setcc xc rd k).
Remark mk_jcc_label:
forall xc lbl' k,
tail_nolabel k (mk_jcc xc lbl' k).
Remark mk_sel_label:
forall xc rd r2 k c,
mk_sel xc rd r2 k = OK c ->
tail_nolabel k c.
Remark transl_cond_label:
forall cond args k c,
transl_cond cond args k = OK c ->
tail_nolabel k c.
Remark transl_op_label:
forall op args r k c,
transl_op op args r k = OK c ->
tail_nolabel k c.
Remark transl_load_label:
forall chunk addr args dest k c,
transl_load chunk addr args dest k = OK c ->
tail_nolabel k c.
Remark transl_store_label:
forall chunk addr args src k c,
transl_store chunk addr args src k = OK c ->
tail_nolabel k c.
End TRANSL_LABEL.
(** A valid branch in a piece of Mach code translates to a valid ``go to'' transition in the generated PPC code. *)

Lemma find_label_goto_label:
forall f tf lbl rs m c' b ofs,
Genv.find_funct_ptr ge b = Some (Internal f) ->
transf_function f = OK tf ->
rs PC = Vptr b ofs ->
Mach.find_label lbl f.(Mach.fn_code) = Some c' ->
exists tc', exists rs',
goto_label tf lbl rs m = Next rs' m
/\ transl_code_at_pc ge (rs' PC) b f c' false tf tc'
/\ forall r, r <> PC -> rs'#r = rs#r.