aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c/Peephole.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-05-02 20:23:56 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-05-02 20:23:56 +0200
commitdf9f42773b48270e77d1760719b1d8399062c2ea (patch)
treeab455803abd768f3b2de7d8e4c7a1f37e8528e38 /mppa_k1c/Peephole.v
parentc56f9a47fe1837b7afb73c2c24aed9228bc0db08 (diff)
downloadcompcert-kvx-df9f42773b48270e77d1760719b1d8399062c2ea.tar.gz
compcert-kvx-df9f42773b48270e77d1760719b1d8399062c2ea.zip
seems to work
Diffstat (limited to 'mppa_k1c/Peephole.v')
-rw-r--r--mppa_k1c/Peephole.v15
1 files changed, 15 insertions, 0 deletions
diff --git a/mppa_k1c/Peephole.v b/mppa_k1c/Peephole.v
new file mode 100644
index 00000000..56e547e5
--- /dev/null
+++ b/mppa_k1c/Peephole.v
@@ -0,0 +1,15 @@
+Require Import Asmvliw.
+
+Definition optimize_body (insns : list basic) := insns.
+
+Program Definition optimize_bblock (bb : bblock) :=
+ let optimized := optimize_body (body bb) in
+ let wf_ok := wf_bblockb optimized (exit bb) in
+ {| header := header bb;
+ body := if wf_ok then optimized else (body bb);
+ exit := exit bb |}.
+Next Obligation.
+ destruct (wf_bblockb (optimize_body (body bb))) eqn:Rwf.
+ - rewrite Rwf. simpl. trivial.
+ - exact (correct bb).
+Qed.