[Bug c/65901] no warning or error for va_arg (ap, void)

2015-04-28 Thread mpolacek at gcc dot gnu.org
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)

2015-04-28 Thread mpolacek at gcc dot gnu.org
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)

2015-04-27 Thread mpolacek at gcc dot gnu.org
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)

2015-04-27 Thread mpolacek at gcc dot gnu.org
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.