summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-05-02 15:04:26 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-05-02 15:04:26 +0000
commitbc24cf49659f91245d8f42ca06fbe7d21a5c06cd (patch)
tree111556a9abc92dd8285e14f92b16731374b501aa /backend
parent850524f31aef255418db8fa2b0f25050b0535b82 (diff)
Extend CSE of loads following stores to chunks Mint64 and Mfloat64al32.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2231 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'backend')
-rw-r--r--backend/CSE.v4
-rw-r--r--backend/CSEproof.v2
2 files changed, 4 insertions, 2 deletions
diff --git a/backend/CSE.v b/backend/CSE.v
index d381cc8..568705b 100644
--- a/backend/CSE.v
+++ b/backend/CSE.v
@@ -254,7 +254,7 @@ Definition kill_loads (n: numbering) : numbering :=
can prove that the store does not invalidate them.
Then, an equations [rsrc = Load chunk addr rargs] is added to reflect
the known content of the stored memory area, but only if [chunk] is
- a "full-size" quantity ([Mint32] or [Mfloat64]). *)
+ a "full-size" quantity ([Mint32] or [Mfloat64] or [Mint64]). *)
Definition filter_after_store (chunk: memory_chunk) (addr: addressing) (vl: list valnum) (r: rhs) : bool :=
match r with
@@ -268,7 +268,7 @@ Definition add_store (n: numbering) (chunk: memory_chunk) (addr: addressing)
let (n1, vargs) := valnum_regs n rargs in
let n2 := kill_equations (filter_after_store chunk addr vargs) n1 in
match chunk with
- | Mint32 | Mfloat64 => add_rhs n2 rsrc (Load chunk addr vargs)
+ | Mint32 | Mint64 | Mfloat64 | Mfloat64al32 => add_rhs n2 rsrc (Load chunk addr vargs)
| _ => n2
end.
diff --git a/backend/CSEproof.v b/backend/CSEproof.v
index 1e269f8..65f67ad 100644
--- a/backend/CSEproof.v
+++ b/backend/CSEproof.v
@@ -696,6 +696,8 @@ Proof.
destruct chunk; auto; apply N3.
simpl in H3. destruct (rs#src); auto || contradiction.
simpl in H3. destruct (rs#src); auto || contradiction.
+ simpl in H3. destruct (rs#src); auto || contradiction.
+ simpl in H3. destruct (rs#src); auto || contradiction.
Qed.
(** Correctness of [reg_valnum]: if it returns a register [r],