summaryrefslogtreecommitdiff
path: root/cfrontend/Cexec.v
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2012-12-18 07:54:35 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2012-12-18 07:54:35 +0000
commit712f3cbae6bfd3c6f6cc40d44f438aa0affcd371 (patch)
tree913762a241b5f97b3ef4df086ba6adaeb2ff45c4 /cfrontend/Cexec.v
parentc629161139899e43a2fe7c5af59ca926cdab370e (diff)
Support for inline assembly (asm statements).
cparser: add primitive support for enum types. bitfield emulation: for bitfields with enum type, choose signed/unsigned as appropriate git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2074 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'cfrontend/Cexec.v')
-rw-r--r--cfrontend/Cexec.v7
1 files changed, 7 insertions, 0 deletions
diff --git a/cfrontend/Cexec.v b/cfrontend/Cexec.v
index b6ea1e0..c768118 100644
--- a/cfrontend/Cexec.v
+++ b/cfrontend/Cexec.v
@@ -506,6 +506,7 @@ Definition do_external (ef: external_function):
| EF_memcpy sz al => do_ef_memcpy sz al
| EF_annot text targs => do_ef_annot text targs
| EF_annot_val text targ => do_ef_annot_val text targ
+ | EF_inline_asm text => do_ef_annot text nil
end.
Lemma do_ef_external_sound:
@@ -575,6 +576,10 @@ Proof with try congruence.
unfold do_ef_annot_val. destruct vargs... destruct vargs... mydestr.
split. constructor. apply eventval_of_val_sound; auto.
econstructor. constructor; eauto. constructor.
+(* EF_inline_asm *)
+ unfold do_ef_annot. destruct vargs; simpl... mydestr.
+ split. constructor. constructor.
+ econstructor. constructor; eauto. constructor.
Qed.
Lemma do_ef_external_complete:
@@ -633,6 +638,8 @@ Proof.
(* EF_annot_val *)
inv H; unfold do_ef_annot_val. inv H0. inv H6. inv H4.
rewrite (eventval_of_val_complete _ _ _ H1). auto.
+(* EF_inline_asm *)
+ inv H; unfold do_ef_annot. inv H0. inv H6. inv H4. inv H1. simpl. auto.
Qed.
(** * Reduction of expressions *)