aboutsummaryrefslogtreecommitdiffstats
path: root/aarch64
diff options
context:
space:
mode:
authorLéo Gourdin <leo.gourdin@univ-grenoble-alpes.fr>2021-05-31 07:50:31 +0200
committerLéo Gourdin <leo.gourdin@univ-grenoble-alpes.fr>2021-05-31 07:50:31 +0200
commit537e20b6963e2eb60be1b1cb98807f3bb2ea9d75 (patch)
treee2ff6728860e151c8f191ba9ce256820d13ea1c4 /aarch64
parentbe8d929aef8e86c2e22e32c525093c6bfe56a300 (diff)
downloadcompcert-kvx-537e20b6963e2eb60be1b1cb98807f3bb2ea9d75.tar.gz
compcert-kvx-537e20b6963e2eb60be1b1cb98807f3bb2ea9d75.zip
bugfix A64 peephole (cf Scade/Fighter example)
Diffstat (limited to 'aarch64')
-rw-r--r--aarch64/PeepholeOracle.ml11
1 files changed, 5 insertions, 6 deletions
diff --git a/aarch64/PeepholeOracle.ml b/aarch64/PeepholeOracle.ml
index 18f41fed..2b214df4 100644
--- a/aarch64/PeepholeOracle.ml
+++ b/aarch64/PeepholeOracle.ml
@@ -401,9 +401,8 @@ let pair_rep_inv insta =
* for one type of inst. Lists contains integers which
* are the indices of insts in the main array "insta". *)
init_symb_mem ();
- for i = Array.length insta - 1 downto 1 do
+ for i = Array.length insta - 1 downto 0 do
let h0 = insta.(i) in
- let h1 = insta.(i - 1) in
(* Here we need to update every symbolic memory according to the matched inst *)
update_pot_rep_basic h0 insta (Ldr P32) true;
update_pot_rep_basic h0 insta (Ldr P64) true;
@@ -413,9 +412,9 @@ let pair_rep_inv insta =
update_pot_rep_basic h0 insta (Str P64) true;
update_pot_rep_basic h0 insta (Str P32f) true;
update_pot_rep_basic h0 insta (Str P64f) true;
- match (h0, h1) with
+ match h0 with
(* Non-consecutive ldr *)
- | PLoad (PLd_rd_a (ldi, rd1, ADimm (b1, n1))), _ ->
+ | PLoad (PLd_rd_a (ldi, rd1, ADimm (b1, n1))) ->
if is_compat_load ldi then (
(* Search a previous compatible load *)
let ld_t = get_load_pht ldi in
@@ -445,7 +444,7 @@ let pair_rep_inv insta =
(trans_ldi ldi, rd1, r, chunk_load ldi, c, ADimm (b, n1)))));
Hashtbl.replace symb_mem ld_t pot_rep)
(* Non-consecutive str *)
- | PStore (PSt_rs_a (sti, rd1, ADimm (b1, n1))), _ ->
+ | PStore (PSt_rs_a (sti, rd1, ADimm (b1, n1))) ->
if is_compat_store sti then (
(* Search a previous compatible store *)
let st_t = get_store_pht sti in
@@ -469,7 +468,7 @@ let pair_rep_inv insta =
(trans_sti sti, rd1, r, chunk_store sti, c, ADimm (b, n1))));
Hashtbl.replace symb_mem st_t pot_rep
(* Any other inst *))
- | i, _ -> (
+ | i -> (
(* Clear list of candidates if there is a non supported store *)
match i with PStore _ -> reset_str_symb_mem () | _ -> ())
done