aboutsummaryrefslogtreecommitdiffstats
path: root/riscV
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@college-de-france.fr>2021-05-13 17:26:05 +0200
committerXavier Leroy <xavier.leroy@college-de-france.fr>2021-05-13 17:26:05 +0200
commit39710f78062a4a999c079b58181a58e62b78c30b (patch)
tree681bd58bbec1bdfb5b3b2074f4ad55193b8b7eb0 /riscV
parent7b3bc19117e48d601e392f2db2c135c7df1d8376 (diff)
downloadcompcert-kvx-39710f78062a4a999c079b58181a58e62b78c30b.tar.gz
compcert-kvx-39710f78062a4a999c079b58181a58e62b78c30b.zip
Register X1 is destroyed by some built-in functions
E.g. __builtin_bswap. Update Asm modeling of builtins accordingly.
Diffstat (limited to 'riscV')
-rw-r--r--riscV/Asm.v2
-rw-r--r--riscV/Asmgenproof.v6
2 files changed, 5 insertions, 3 deletions
diff --git a/riscV/Asm.v b/riscV/Asm.v
index 7e1b1fc8..a47573a2 100644
--- a/riscV/Asm.v
+++ b/riscV/Asm.v
@@ -1080,7 +1080,7 @@ Inductive step: state -> trace -> state -> Prop :=
rs' = nextinstr
(set_res res vres
(undef_regs (map preg_of (destroyed_by_builtin ef))
- (rs#X31 <- Vundef))) ->
+ (rs #X1 <- Vundef #X31 <- Vundef))) ->
step (State rs m) t (State rs' m')
| exec_step_external:
forall b ef args res rs m t rs' m',
diff --git a/riscV/Asmgenproof.v b/riscV/Asmgenproof.v
index ab07d071..798dad9f 100644
--- a/riscV/Asmgenproof.v
+++ b/riscV/Asmgenproof.v
@@ -835,13 +835,15 @@ Local Transparent destroyed_by_op.
econstructor; eauto.
instantiate (2 := tf); instantiate (1 := x).
unfold nextinstr. rewrite Pregmap.gss.
- rewrite set_res_other. rewrite undef_regs_other_2. rewrite Pregmap.gso by congruence.
+ rewrite set_res_other. rewrite undef_regs_other_2.
+ rewrite ! Pregmap.gso by congruence.
rewrite <- H1. simpl. econstructor; eauto.
eapply code_tail_next_int; eauto.
rewrite preg_notin_charact. intros. auto with asmgen.
auto with asmgen.
apply agree_nextinstr. eapply agree_set_res; auto.
- eapply agree_undef_regs; eauto. intros. rewrite undef_regs_other_2; auto. apply Pregmap.gso; auto with asmgen.
+ eapply agree_undef_regs; eauto. intros. rewrite undef_regs_other_2; auto.
+ rewrite ! Pregmap.gso; auto with asmgen.
congruence.
- (* Mgoto *)