From 5609035afa76eac2fd284a8ad5c190e2347ee88b Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Thu, 17 Jan 2019 15:53:47 +0100 Subject: Corrected a bug in Pallocframe expansion with va_args --- mppa_k1c/Asmexpand.ml | 9 ++++++--- mppa_k1c/PostpassSchedulingOracle.ml | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/mppa_k1c/Asmexpand.ml b/mppa_k1c/Asmexpand.ml index 47284e4b..0252ce85 100644 --- a/mppa_k1c/Asmexpand.ml +++ b/mppa_k1c/Asmexpand.ml @@ -334,12 +334,13 @@ let _nbregargs_ = 12 let _alignment_ = 8 let save_arguments first_reg base_ofs = let open Asmblock in - for i = first_reg to (_nbregargs_ - 1) do + for i = first_reg to (_nbregargs_ - 1) do begin expand_storeind_ptr int_param_regs.(i) GPR12 - (Ptrofs.repr (Z.add base_ofs (Z.of_uint ((i - first_reg) * wordsize)))) - done + (Ptrofs.repr (Z.add base_ofs (Z.of_uint ((i - first_reg) * wordsize)))); + emit Psemi + end done let vararg_start_ofs : Z.t option ref = ref None @@ -450,6 +451,7 @@ let expand_instruction instr = expand_addptrofs Asmblock.GPR12 Asmblock.GPR12 (Ptrofs.repr (Z.neg full_sz)); emit Psemi; expand_storeind_ptr Asmblock.GPR14 Asmblock.GPR12 ofs; + emit Psemi; let va_ofs = sz in (*Z.add full_sz (Z.of_sint ((n - _nbregargs_) * wordsize)) in *) @@ -459,6 +461,7 @@ let expand_instruction instr = expand_addptrofs Asmblock.GPR12 Asmblock.GPR12 (Ptrofs.repr (Z.neg sz)); emit Psemi; expand_storeind_ptr Asmblock.GPR14 Asmblock.GPR12 ofs; + emit Psemi; vararg_start_ofs := None end | Pfreeframe (sz, ofs) -> diff --git a/mppa_k1c/PostpassSchedulingOracle.ml b/mppa_k1c/PostpassSchedulingOracle.ml index 5c50d50a..4291316a 100644 --- a/mppa_k1c/PostpassSchedulingOracle.ml +++ b/mppa_k1c/PostpassSchedulingOracle.ml @@ -582,6 +582,7 @@ let print_inst oc = function | Asm.Pfreeframe(sz, ofs) -> fprintf oc " Pfreeframe\n" | Asm.Pbuiltin(ef, args, res) -> fprintf oc " Pbuiltin\n" | Asm.Pcvtl2w(rd, rs) -> fprintf oc " Pcvtl2w %a = %a\n" ireg rd ireg rs + | Asm.Pcvtw2l rd -> fprintf oc " Pcvtw2l %a\n" ireg rd | i -> print_instruction oc i let print_bb oc bb = -- cgit