aboutsummaryrefslogtreecommitdiffstats
path: root/backend
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-10-29 16:02:39 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-10-29 16:02:39 +0100
commit92bb12b37533b7e70fd619edd23fd9a3ee4c247c (patch)
treecc4824886464671c980f6fb24feb988a1fc43f4b /backend
parent4d79ef052cc05240d6613bb22ef1ec547b17d3e1 (diff)
downloadcompcert-kvx-92bb12b37533b7e70fd619edd23fd9a3ee4c247c.tar.gz
compcert-kvx-92bb12b37533b7e70fd619edd23fd9a3ee4c247c.zip
CSE3 trivial_ops flag
Diffstat (limited to 'backend')
-rw-r--r--backend/CSE3.v2
-rw-r--r--backend/CSE3proof.v4
2 files changed, 3 insertions, 3 deletions
diff --git a/backend/CSE3.v b/backend/CSE3.v
index df1c2bfc..58e179e2 100644
--- a/backend/CSE3.v
+++ b/backend/CSE3.v
@@ -58,7 +58,7 @@ Definition transf_instr (fmap : PMap.t RB.t)
match instr with
| Iop op args dst s =>
let args' := subst_args fmap pc args in
- match (if is_trivial_op op then None else find_op_in_fmap fmap pc op args') with
+ match (if andb (negb (Compopts.optim_CSE3_trivial_ops tt)) (is_trivial_op op) then None else find_op_in_fmap fmap pc op args') with
| None => Iop op args' dst s
| Some src => Iop Omove (src::nil) dst s
end
diff --git a/backend/CSE3proof.v b/backend/CSE3proof.v
index 5dd5ee04..a0361746 100644
--- a/backend/CSE3proof.v
+++ b/backend/CSE3proof.v
@@ -462,12 +462,12 @@ Lemma step_simulation:
destruct (@PMap.get (option RELATION.t) pc) eqn:INV_PC.
pose proof (rhs_find_sound (sp:=sp) (genv:=ge) (ctx:=(context_from_hints (snd (preanalysis tenv f)))) pc (SOp op)
(subst_args (ctx:=(context_from_hints (snd (preanalysis tenv f)))) (fst (preanalysis tenv f)) pc args) t) as FIND_SOUND.
- * destruct (if is_trivial_op op
+ * destruct (if (negb (Compopts.optim_CSE3_trivial_ops tt) && is_trivial_op op)
then None
else
rhs_find pc (SOp op)
(subst_args (fst (preanalysis tenv f)) pc args) t) eqn:FIND.
- ** destruct (is_trivial_op op). discriminate.
+ ** destruct (negb (Compopts.optim_CSE3_trivial_ops tt) && is_trivial_op op). discriminate.
apply exec_Iop with (op := Omove) (args := r :: nil).
TR_AT.
subst instr'.