(expand_builtin): Allow __builtin_next_arg to be used in varargs
authorRichard Kenner <kenner@gcc.gnu.org>
Wed, 15 Dec 1993 23:14:13 +0000 (18:14 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Wed, 15 Dec 1993 23:14:13 +0000 (18:14 -0500)
functions.

From-SVN: r6237

gcc/expr.c

index a6248be5049bb7aff135e17a988fe3aade62991d..09178a6842d0ce70986a1acc196d7f6ced9ced16 100644 (file)
@@ -6936,10 +6936,17 @@ expand_builtin (exp, target, subtarget, mode, ignore)
       /* Return the address of the first anonymous stack arg.  */
     case BUILT_IN_NEXT_ARG:
       {
+       tree parm;
        tree fntype = TREE_TYPE (current_function_decl);
+       tree fnargs = DECL_ARGUMENTS (current_function_decl);
        if (!(TYPE_ARG_TYPES (fntype) != 0
              && (TREE_VALUE (tree_last (TYPE_ARG_TYPES (fntype)))
-                 != void_type_node)))
+                 != void_type_node))
+           && !(fnargs
+                && (parm = tree_last (fnargs)) != 0
+                && DECL_NAME (parm)
+                && (! strcmp (IDENTIFIER_POINTER (DECL_NAME (parm)),
+                              "__builtin_va_alist"))))
          {
            error ("`va_start' used in function with fixed args");
            return const0_rtx;