aboutsummaryrefslogtreecommitdiffstats
path: root/backend/CSEproof.v
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@college-de-france.fr>2019-07-03 19:08:18 +0200
committerXavier Leroy <xavierleroy@users.noreply.github.com>2019-07-17 09:17:28 +0200
commit10aa130361a5a673a14a7b38ed9c077103f9155f (patch)
tree88b1da80d7f16285f3b4fe19420b6be4c49f618d /backend/CSEproof.v
parente16b34d9fc1aa7854759787fd52ad59c964c2d4b (diff)
downloadcompcert-kvx-10aa130361a5a673a14a7b38ed9c077103f9155f.tar.gz
compcert-kvx-10aa130361a5a673a14a7b38ed9c077103f9155f.zip
Improve CSE for known built-in functions
Known built-in functions are guaranteed not to change memory.
Diffstat (limited to 'backend/CSEproof.v')
-rw-r--r--backend/CSEproof.v6
1 files changed, 4 insertions, 2 deletions
diff --git a/backend/CSEproof.v b/backend/CSEproof.v
index a60c316b..03c7ecfc 100644
--- a/backend/CSEproof.v
+++ b/backend/CSEproof.v
@@ -14,7 +14,7 @@
Require Import Coqlib Maps Errors Integers Floats Lattice Kildall.
Require Import AST Linking.
-Require Import Values Memory Events Globalenvs Smallstep.
+Require Import Values Memory Builtins Events Globalenvs Smallstep.
Require Import Op Registers RTL.
Require Import ValueDomain ValueAOp ValueAnalysis.
Require Import CSEdomain CombineOp CombineOpproof CSE.
@@ -1129,7 +1129,9 @@ Proof.
{ exists valu. apply set_res_unknown_holds. eapply kill_all_loads_hold; eauto. }
destruct ef.
+ apply CASE1.
- + apply CASE3.
+ + destruct (lookup_builtin_function name sg) as [bf|] eqn:LK.
+ ++ apply CASE2. simpl in H1; red in H1; rewrite LK in H1; inv H1. auto.
+ ++ apply CASE3.
+ apply CASE1.
+ apply CASE2; inv H1; auto.
+ apply CASE3.