[Bug c/65901] no warning or error for va_arg (ap, void)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65901 --- Comment #3 from Marek Polacek mpolacek at gcc dot gnu.org --- Author: mpolacek Date: Tue Apr 28 08:36:50 2015 New Revision: 222515 URL: https://gcc.gnu.org/viewcvs?rev=222515root=gccview=rev Log: PR c/65901 * c-typeck.c (c_build_va_arg): Require TYPE be a complete type. * gcc.c-torture/compile/pr48767.c (foo): Add dg-error. * gcc.dg/pr65901.c: New test. Added: trunk/gcc/testsuite/gcc.dg/pr65901.c Modified: trunk/gcc/c/ChangeLog trunk/gcc/c/c-typeck.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.c-torture/compile/pr48767.c
[Bug c/65901] no warning or error for va_arg (ap, void)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65901 Marek Polacek mpolacek at gcc dot gnu.org changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #4 from Marek Polacek mpolacek at gcc dot gnu.org --- Fixed for GCC 6.
[Bug c/65901] no warning or error for va_arg (ap, void)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65901 --- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org --- Untested patch: --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -12648,6 +12648,11 @@ c_build_va_arg (location_t loc, tree expr, tree type) if (warn_cxx_compat TREE_CODE (type) == ENUMERAL_TYPE) warning_at (loc, OPT_Wc___compat, C++ requires promoted type, not enum type, in %va_arg%); + if (type == error_mark_node || !COMPLETE_TYPE_P (type)) +{ + c_incomplete_type_error (NULL_TREE, type); + return error_mark_node; +} return build_va_arg (loc, expr, type); }
[Bug c/65901] no warning or error for va_arg (ap, void)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65901 Marek Polacek mpolacek at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2015-04-27 CC||mpolacek at gcc dot gnu.org Target Milestone|--- |6.0 Ever confirmed|0 |1 --- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org --- We should probably reject such a program. G++/clang reject that as well.