Patchwork use build_function_type_list in the stormy16 backend

login
register
mail settings
Submitter Nathan Froyd
Date April 20, 2011, 8:14 p.m.
Message ID <20110420201400.GR6507@nightcrawler>
Download mbox | patch
Permalink /patch/92312/
State New
Headers show

Comments

Nathan Froyd - April 20, 2011, 8:14 p.m.
As $SUBJECT suggests.  For safety's sake, we initialize all the
arguments to NULL before passing them to build_function_type_list.  This
is not necessary currently, as we always completely fill in the args
array, but it might save some future coder from quite some grief...

Tested with cross to xstormy16-elf.  OK to commit?

-Nathan

	* config/stormy16/stormy16 (xstormy16_init_builtins): Call
	build_function_type_list instead of build_function_type.
	Rearrange initialization of `args' to do so.
Nick Clifton - April 21, 2011, 2:10 p.m.
Hi Nathan,

> 	* config/stormy16/stormy16 (xstormy16_init_builtins): Call
> 	build_function_type_list instead of build_function_type.
> 	Rearrange initialization of `args' to do so.

Approved - please apply.

Cheers
   Nick

Patch

diff --git a/gcc/config/stormy16/stormy16.c b/gcc/config/stormy16/stormy16.c
index 052285c..1a90e16 100644
--- a/gcc/config/stormy16/stormy16.c
+++ b/gcc/config/stormy16/stormy16.c
@@ -2255,15 +2255,21 @@  static struct
 static void
 xstormy16_init_builtins (void)
 {
-  tree args, ret_type, arg;
-  int i, a;
+  tree args[2], ret_type, arg = NULL_TREE, ftype;
+  int i, a, n_args;
 
   ret_type = void_type_node;
 
   for (i = 0; s16builtins[i].name; i++)
     {
-      args = void_list_node;
-      for (a = strlen (s16builtins[i].arg_types) - 1; a >= 0; a--)
+      n_args = strlen (s16builtins[i].arg_types) - 1;
+
+      gcc_assert (n_args <= (int) ARRAY_SIZE (args));
+
+      for (a = n_args; a >= 0; a--)
+	args[a] = NULL_TREE;
+
+      for (a = n_args; a >= 0; a--)
 	{
 	  switch (s16builtins[i].arg_types[a])
 	    {
@@ -2276,10 +2282,10 @@  xstormy16_init_builtins (void)
 	  if (a == 0)
 	    ret_type = arg;
 	  else
-	    args = tree_cons (NULL_TREE, arg, args);
+	    args[a-1] = arg;
 	}
-      add_builtin_function (s16builtins[i].name,
-			    build_function_type (ret_type, args),
+      ftype = build_function_type_list (ret_type, arg[0], arg[1], NULL_TREE);
+      add_builtin_function (s16builtins[i].name, ftype,
 			    i, BUILT_IN_MD, NULL, NULL);
     }
 }