aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2019-01-17 15:53:47 +0100
committerCyril SIX <cyril.six@kalray.eu>2019-01-17 15:53:47 +0100
commit5609035afa76eac2fd284a8ad5c190e2347ee88b (patch)
tree846dcfea3f5d56051347c1fb1181bf437a0af4e7
parentc3fc0620d07a96fd75adc5c60aeb90f89fdc620e (diff)
downloadcompcert-kvx-5609035afa76eac2fd284a8ad5c190e2347ee88b.tar.gz
compcert-kvx-5609035afa76eac2fd284a8ad5c190e2347ee88b.zip
Corrected a bug in Pallocframe expansion with va_args
-rw-r--r--mppa_k1c/Asmexpand.ml9
-rw-r--r--mppa_k1c/PostpassSchedulingOracle.ml1
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 =