From 9e09561f54db459757446db52c01bf3d85bd8764 Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Wed, 24 Feb 2016 17:03:49 +0100 Subject: bug 18168, catch cases where variadic arguments are transfered via registers --- arm/Asmexpand.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'arm/Asmexpand.ml') diff --git a/arm/Asmexpand.ml b/arm/Asmexpand.ml index 77714721..5415f78e 100644 --- a/arm/Asmexpand.ml +++ b/arm/Asmexpand.ml @@ -257,7 +257,7 @@ let align n a = (n + a - 1) land (-a) let rec next_arg_location ir ofs = function | [] -> - Int32.of_int (16 + ofs) + Int32.of_int (ir * 4 + ofs) | (Tint | Tsingle | Tany32) :: l -> if ir < 4 then next_arg_location (ir + 1) ofs l @@ -265,7 +265,7 @@ let rec next_arg_location ir ofs = function | (Tfloat | Tlong | Tany64) :: l -> if ir < 3 then next_arg_location (align ir 2 + 2) ofs l - else next_arg_location ir (align ofs 8 + 8) l + else next_arg_location 4 (align ofs 8 + 8) l let expand_builtin_va_start r = if not !current_function.fn_sig.sig_cc.cc_vararg then -- cgit