diff options
author | Cyril SIX <cyril.six@kalray.eu> | 2019-01-17 15:53:47 +0100 |
---|---|---|
committer | Cyril SIX <cyril.six@kalray.eu> | 2019-01-17 15:53:47 +0100 |
commit | 5609035afa76eac2fd284a8ad5c190e2347ee88b (patch) | |
tree | 846dcfea3f5d56051347c1fb1181bf437a0af4e7 | |
parent | c3fc0620d07a96fd75adc5c60aeb90f89fdc620e (diff) | |
download | compcert-kvx-5609035afa76eac2fd284a8ad5c190e2347ee88b.tar.gz compcert-kvx-5609035afa76eac2fd284a8ad5c190e2347ee88b.zip |
Corrected a bug in Pallocframe expansion with va_args
-rw-r--r-- | mppa_k1c/Asmexpand.ml | 9 | ||||
-rw-r--r-- | 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 = |