diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-12-15 18:14:13 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-12-15 18:14:13 -0500 |
commit | 1f9becfcbe01274dd5a98f551cd432adae05a8b2 (patch) | |
tree | d4e582e6352ba17d713794d1a8b02fb6fffcf8b4 | |
parent | ede575495613c7d0f1332379878dee17cf7f9739 (diff) | |
download | gcc-1f9becfcbe01274dd5a98f551cd432adae05a8b2.zip gcc-1f9becfcbe01274dd5a98f551cd432adae05a8b2.tar.gz gcc-1f9becfcbe01274dd5a98f551cd432adae05a8b2.tar.bz2 |
(expand_builtin): Allow __builtin_next_arg to be used in varargs
functions.
From-SVN: r6237
-rw-r--r-- | gcc/expr.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -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; |