OSDN Git Service

* tree.h (type_num_arguments): Declare it.
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 May 2001 03:03:26 +0000 (03:03 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 May 2001 03:03:26 +0000 (03:03 +0000)
* tree.c (type_num_arguments): New function.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42418 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree.c
gcc/tree.h

index 79c18bf..4b87a8c 100644 (file)
@@ -1,3 +1,8 @@
+2001-05-21  Mark Mitchell  <mark@codesourcery.com>
+
+       * tree.h (type_num_arguments): Declare it.
+       * tree.c (type_num_arguments): New function.
+
 2001-05-21  Richard Henderson  <rth@redhat.com>
 
        * dwarf2out.c (current_funcdef_number): Move outside dwarf2
index 9245449..866067b 100644 (file)
@@ -3334,6 +3334,28 @@ type_list_equal (l1, l2)
   return t1 == t2;
 }
 
+/* Returns the number of arguments to the FUNCTION_TYPE or METHOD_TYPE
+   given by TYPE.  If the argument list accepts variable arguments,
+   then this function counts only the ordinary arguments.  */
+
+int
+type_num_arguments (type)
+     tree type;
+{
+  int i = 0;
+  tree t;
+
+  for (t = TYPE_ARG_TYPES (type); t; t = TREE_CHAIN (t))
+    /* If the function does not take a variable number of arguments,
+       the last element in the list will have type `void'.  */
+    if (VOID_TYPE_P (TREE_VALUE (t)))
+      break;
+    else
+      ++i;
+
+  return i;
+}
+
 /* Nonzero if integer constants T1 and T2
    represent the same constant value.  */
 
index e10352f..622eed3 100644 (file)
@@ -2520,6 +2520,7 @@ extern tree get_set_constructor_bytes             PARAMS ((tree,
                                                       unsigned char *, int));
 extern tree get_callee_fndecl                   PARAMS ((tree));
 extern void set_decl_assembler_name             PARAMS ((tree));
+extern int type_num_arguments                   PARAMS ((tree));
 \f
 /* In stmt.c */