Vous avez reçu un message "Your GitLab account has been locked ..." ? Pas d'inquiétude : lisez cet article https://docs.gricad-pages.univ-grenoble-alpes.fr/help/unlock/

Commit 537e20b6 authored by Léo Gourdin's avatar Léo Gourdin
Browse files

bugfix A64 peephole (cf Scade/Fighter example)

parent be8d929a
......@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment