https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117387

            Bug ID: 117387
           Summary: Incorrect n_named_args in expand_call
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
  Target Milestone: ---

expand_call has

 if (type_arg_types != 0)
    n_named_args
      = (list_length (type_arg_types)
         /* Count the struct value address, if it is passed as a parm.  */
         + structure_value_addr_parm);
  else if (TYPE_NO_NAMED_ARGS_STDARG_P (funtype))
    n_named_args = structure_value_addr_parm;
  else   
    /* If we know nothing, treat all args as named.  */
    n_named_args = num_actuals;

Since void_list_node is placed at the end of a parameter list to indicate that
the function does not take a variable number of arguments and the last
TREE_VALUE will be void_type_node, for non-variadic function, n_named_args
is off by 1.

Reply via email to