FreeBSD/contrib/gcc/c-common.c
/* A helper function for c_common_nodes_and_builtins.  Build function type
   for DEF with return type RET and N arguments.  If VAR is true, then the
   function should be variadic after those N arguments.

   Takes special care not to ICE if any of the types involved are
   error_mark_node, which indicates that said type is not in fact available
   (see builtin_type_for_size).  In which case the function type as a whole
   should be error_mark_node.  */
A helper function for c_common_nodes_and_builtins.  Build function type
for DEF with return type RET and N arguments.  If VAR is true, then the
function should be variadic after those N arguments.

Takes special care not to ICE if any of the types involved are
error_mark_node, which indicates that said type is not in fact available
.  In which case the function type as a whole
should be error_mark_node.
A helper function for c_common_nodes_and_builtins . Build function type for DEF with return type RET and N arguments . If VAR is true then the function should be variadic after those N arguments . Takes special care not to ICE if any of the types involved are error_mark_node which indicates that said type is not in fact available . In which case the function type as a whole should be error_mark_node .
static void
def_fn_type (builtin_type def, builtin_type ret, bool var, int n, ...)
{
  tree args = NULL, t;
  va_list list;
  int i;
  va_start (list, n);
  for (i = 0; i < n; ++i)
    {
      builtin_type a = va_arg (list, builtin_type);
      t = builtin_types[a];
      if (t == error_mark_node)
	goto egress;
      args = tree_cons (NULL_TREE, t, args);
    }
  va_end (list);
  args = nreverse (args);
  if (!var)
    args = chainon (args, void_list_node);
  t = builtin_types[ret];
  if (t == error_mark_node)
    goto egress;
  t = build_function_type (t, args);
 egress:
  builtin_types[def] = t;
}
static void def_fn_type ( builtin_type def , builtin_type ret , bool var , int n , ... ) { tree args = NULL , t ; va_list list ; int i ; va_start ( list , n ) ; for ( i = 0 ; i < n ; ++ i ) { builtin_type a = va_arg ( list , builtin_type ) ; t = builtin_types [ a ] ; if ( t == error_mark_node ) goto egress ; args = tree_cons ( NULL_TREE , t , args ) ; } va_end ( list ) ; args = nreverse ( args ) ; if ( ! var ) args = chainon ( args , void_list_node ) ; t = builtin_types [ ret ] ; if ( t == error_mark_node ) goto egress ; t = build_function_type ( t , args ) ; egress : builtin_types [ def ] = t ; }
A helper function for c_common_nodes_and_builtins.
A helper function for c_common_nodes_and_builtins .