diff mbox

[AArch64] Remove varargs from aarch64_simd_expand_args

Message ID 53F46866.1020604@arm.com
State New
Headers show

Commit Message

Alan Lawrence Aug. 20, 2014, 9:20 a.m. UTC
This patch just replaces the varargs with a builtin_simd_arg*. The use of 
varargs seems to make stepping into, and breakpointing, aarch64_simd_expand_args 
difficult, and this adds typesafety and (I argue!) reduces complexity.

Tested check-gcc on aarch64-none-elf.

gcc/ChangeLog:

	* config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Replace
	varargs with pointer parameter.
	(aarch64_simd_expand_builtin): pass pointer into previous.

Comments

Marcus Shawcroft Sept. 2, 2014, 4:41 p.m. UTC | #1
On 20 August 2014 10:20, Alan Lawrence <alan.lawrence@arm.com> wrote:

> gcc/ChangeLog:
>
>         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args):
> Replace
>         varargs with pointer parameter.
>         (aarch64_simd_expand_builtin): pass pointer into previous.

OK /Marcus
diff mbox

Patch

diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c
index fee17ecf637436c8704f565be2eb9ef23891209a..1af17900785685e4e005710d3bb1743d88a11c16 100644
--- a/gcc/config/aarch64/aarch64-builtins.c
+++ b/gcc/config/aarch64/aarch64-builtins.c
@@ -904,9 +904,8 @@  typedef enum
 
 static rtx
 aarch64_simd_expand_args (rtx target, int icode, int have_retval,
-			  tree exp, ...)
+			  tree exp, builtin_simd_arg *args)
 {
-  va_list ap;
   rtx pat;
   tree arg[SIMD_MAX_BUILTIN_ARGS];
   rtx op[SIMD_MAX_BUILTIN_ARGS];
@@ -920,11 +919,9 @@  aarch64_simd_expand_args (rtx target, int icode, int have_retval,
 	  || !(*insn_data[icode].operand[0].predicate) (target, tmode)))
     target = gen_reg_rtx (tmode);
 
-  va_start (ap, exp);
-
   for (;;)
     {
-      builtin_simd_arg thisarg = (builtin_simd_arg) va_arg (ap, int);
+      builtin_simd_arg thisarg = args[argc];
 
       if (thisarg == SIMD_ARG_STOP)
 	break;
@@ -960,8 +957,6 @@  aarch64_simd_expand_args (rtx target, int icode, int have_retval,
 	}
     }
 
-  va_end (ap);
-
   if (have_retval)
     switch (argc)
       {
@@ -1075,12 +1070,7 @@  aarch64_simd_expand_builtin (int fcode, tree exp, rtx target)
   /* The interface to aarch64_simd_expand_args expects a 0 if
      the function is void, and a 1 if it is not.  */
   return aarch64_simd_expand_args
-	  (target, icode, !is_void, exp,
-	   args[1],
-	   args[2],
-	   args[3],
-	   args[4],
-	   SIMD_ARG_STOP);
+	  (target, icode, !is_void, exp, &args[1]);
 }
 
 rtx