diff options
author | Andreas Jaeger <aj@suse.de> | 2001-08-27 08:48:43 +0200 |
---|---|---|
committer | Andreas Jaeger <aj@gcc.gnu.org> | 2001-08-27 08:48:43 +0200 |
commit | 7a75edb707a02506432d73b93b38c8a4f10de79e (patch) | |
tree | 58234e1acd4f13f4f073a6ad3b59cad11faacb33 /gcc/builtins.c | |
parent | 6baff4c1e804d360bf220142a24212f2e5759ad1 (diff) | |
download | gcc-7a75edb707a02506432d73b93b38c8a4f10de79e.zip gcc-7a75edb707a02506432d73b93b38c8a4f10de79e.tar.gz gcc-7a75edb707a02506432d73b93b38c8a4f10de79e.tar.bz2 |
emit-rtl.c: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
* emit-rtl.c: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
* errors.c: Likewise.
* final.c: Likewise.
* dwarf2asm.c: Likewise.
* doprint.c (checkit): Likewise.
* diagnostic.c: Likewise.
* collect2.c: Likewise.
* calls.c: Likewise.
* c-semantics.c (build_stmt): Likewise.
* c-format.c (status_warning): Likewise.
* c-errors.c (pedwarn_c99): Likewise.
* builtins.c (validate_arglist): Likewise.
* config/pj/pj.c (pj_printf): Likewise.
* fix-header.c: Likewise.
* gcc.c: Likewise.
* gcov.c (fnotice): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c: Likewise.
* protoize.c (notice): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c: Likewise.
* tradcpp.c: Likewise.
* tree.c: Likewise.
* cp/tree.c (build_min_nt): Likewise.
(build_min): Likewise.
* cp/lex.c: Likewise.
* cp/errfn.c: Likewise.
* cp/rtti.c (create_pseudo_type_info): Likewise.
From-SVN: r45185
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index 3b12b38..53f6fa0 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -3864,17 +3864,11 @@ build_function_call_expr (fn, arglist) static int validate_arglist VPARAMS ((tree arglist, ...)) { -#ifndef ANSI_PROTOTYPES - tree arglist; -#endif enum tree_code code; - va_list ap; - - VA_START (ap, arglist); + int res = 0; -#ifndef ANSI_PROTOTYPES - arglist = va_arg (ap, tree); -#endif + VA_OPEN (ap, arglist); + VA_FIXEDARG (ap, tree, arglist); do { code = va_arg (ap, enum tree_code); @@ -3882,26 +3876,30 @@ validate_arglist VPARAMS ((tree arglist, ...)) { case 0: /* This signifies an ellipses, any further arguments are all ok. */ - va_end (ap); - return 1; + res = 1; + goto end; case VOID_TYPE: /* This signifies an endlink, if no arguments remain, return true, otherwise return false. */ - va_end (ap); - return arglist == 0; + res = arglist == 0; + goto end; default: /* If no parameters remain or the parameter's code does not match the specified code, return false. Otherwise continue checking any remaining arguments. */ if (arglist == 0 || code != TREE_CODE (TREE_TYPE (TREE_VALUE (arglist)))) - { - va_end (ap); - return 0; - } + goto end; break; } arglist = TREE_CHAIN (arglist); } while (1); + + /* We need gotos here since we can only have one VA_CLOSE in a + function. */ + end: ; + VA_CLOSE (ap); + + return res; } /* Default version of target-specific builtin setup that does nothing. */ |