diff options
author | Tristan Gingold <gingold@adacore.com> | 2011-10-11 07:13:59 +0000 |
---|---|---|
committer | Tristan Gingold <gingold@gcc.gnu.org> | 2011-10-11 07:13:59 +0000 |
commit | 6637388fdc4b4c82c906966024f9012fc0c71df5 (patch) | |
tree | 42265edef2e5b8b22a409439cc87ddca221acd00 | |
parent | 10d1dc24ff815c3ed2b9c66493f05e44d5d7bafe (diff) | |
download | gcc-6637388fdc4b4c82c906966024f9012fc0c71df5.zip gcc-6637388fdc4b4c82c906966024f9012fc0c71df5.tar.gz gcc-6637388fdc4b4c82c906966024f9012fc0c71df5.tar.bz2 |
c.opt: (fallow-parameterless-variadic-functions): New.
c-family/ChangeLog
2011-10-11 Tristan Gingold <gingold@adacore.com>
* c.opt: (fallow-parameterless-variadic-functions): New.
ChangeLog
2011-10-11 Tristan Gingold <gingold@adacore.com>
* doc/invoke.texi (C Dialect Options): Document
-fallow-parameterless-variadic-functions.
* c-parser.c (c_parser_parms_list_declarator): Handle it.
testsuite/ChangeLog
2011-10-11 Tristan Gingold <gingold@adacore.com>
* gcc.dg/va-arg-4.c: New test.
* gcc.dg/va-arg-5.c: Ditto.
From-SVN: r179786
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-family/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/c-family/c.opt | 4 | ||||
-rw-r--r-- | gcc/c-parser.c | 17 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/va-arg-4.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/va-arg-5.c | 4 |
8 files changed, 47 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b4bf897..957d661 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-10-11 Tristan Gingold <gingold@adacore.com> + + * doc/invoke.texi (C Dialect Options): Document + -fallow-parameterless-variadic-functions. + * c-parser.c (c_parser_parms_list_declarator): Handle it. + 2011-10-10 Georg-Johann Lay <avr@gjlay.de> * config/avr/avr.c (avr_option_override): Set diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 080d42a..e93b98d 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,7 @@ +2011-10-11 Tristan Gingold <gingold@adacore.com> + + * c.opt: (fallow-parameterless-variadic-functions): New. + 2011-09-08 Dodji Seketeli <dodji@redhat.com> PR c++/33255 - Support -Wunused-local-typedefs warning diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index e6ac5dc..79287c4 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -700,6 +700,10 @@ Enforce class member access control semantics fall-virtual C++ ObjC++ Ignore Warn(switch %qs is no longer supported) +fallow-parameterless-variadic-functions +C ObjC Var(flag_allow_parameterless_variadic_functions) +Allow variadic functions without named parameter + falt-external-templates C++ ObjC++ Ignore Warn(switch %qs is no longer supported) No longer supported diff --git a/gcc/c-parser.c b/gcc/c-parser.c index c948b80..af6cc14 100644 --- a/gcc/c-parser.c +++ b/gcc/c-parser.c @@ -3159,10 +3159,19 @@ c_parser_parms_list_declarator (c_parser *parser, tree attrs, tree expr) if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) { struct c_arg_info *ret = build_arg_info (); - /* Suppress -Wold-style-definition for this case. */ - ret->types = error_mark_node; - error_at (c_parser_peek_token (parser)->location, - "ISO C requires a named argument before %<...%>"); + + if (flag_allow_parameterless_variadic_functions) + { + /* F (...) is allowed. */ + ret->types = NULL_TREE; + } + else + { + /* Suppress -Wold-style-definition for this case. */ + ret->types = error_mark_node; + error_at (c_parser_peek_token (parser)->location, + "ISO C requires a named argument before %<...%>"); + } c_parser_consume_token (parser); if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) { diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index ef7ac68..6888928 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -170,7 +170,7 @@ in the following sections. @item C Language Options @xref{C Dialect Options,,Options Controlling C Dialect}. @gccoptlist{-ansi -std=@var{standard} -fgnu89-inline @gol --aux-info @var{filename} @gol +-aux-info @var{filename} -fallow-parameterless-variadic-functions @gol -fno-asm -fno-builtin -fno-builtin-@var{function} @gol -fhosted -ffreestanding -fopenmp -fms-extensions -fplan9-extensions @gol -trigraphs -no-integrated-cpp -traditional -traditional-cpp @gol @@ -1622,6 +1622,13 @@ character). In the case of function definitions, a K&R-style list of arguments followed by their declarations is also provided, inside comments, after the declaration. +@item -fallow-parameterless-variadic-functions +Accept variadic functions without named parameters. + +Although it is possible to define such a function, this is not very +useful as it is not possible to read the arguments. This is only +supported for C as this construct is allowed by C++. + @item -fno-asm @opindex fno-asm Do not recognize @code{asm}, @code{inline} or @code{typeof} as a diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c8af957..1a80895 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-10-11 Tristan Gingold <gingold@adacore.com> + + * gcc.dg/va-arg-4.c: New test. + * gcc.dg/va-arg-5.c: Ditto. + 2011-10-11 Uros Bizjak <ubizjak@gmail.com> * lib/target-supports.exp (check_effective_target_fd_truncate): diff --git a/gcc/testsuite/gcc.dg/va-arg-4.c b/gcc/testsuite/gcc.dg/va-arg-4.c new file mode 100644 index 0000000..6d737c4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/va-arg-4.c @@ -0,0 +1,3 @@ +/* { dg-do compile } */ +#include <stdarg.h> +extern void baz(...); /* { dg-error "requires a named argument" } */ diff --git a/gcc/testsuite/gcc.dg/va-arg-5.c b/gcc/testsuite/gcc.dg/va-arg-5.c new file mode 100644 index 0000000..a00616e --- /dev/null +++ b/gcc/testsuite/gcc.dg/va-arg-5.c @@ -0,0 +1,4 @@ +/* { dg-do compile } */ +/* { dg-options "-fallow-parameterless-variadic-functions" } */ +#include <stdarg.h> +extern void baz(...); |