http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56989
Manuel López-Ibáñez <manu at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2013-04-17 CC| |manu at gcc dot gnu.org Ever Confirmed|0 |1 --- Comment #1 from Manuel López-Ibáñez <manu at gcc dot gnu.org> 2013-04-17 21:08:52 UTC --- Index: c-typeck.c =================================================================== --- c-typeck.c (revision 198021) +++ c-typeck.c (working copy) @@ -1981,11 +1981,12 @@ default_conversion (tree exp) if (TREE_NO_WARNING (orig_exp)) TREE_NO_WARNING (exp) = 1; if (code == VOID_TYPE) { - error ("void value not ignored as it ought to be"); + error_at (EXPR_LOC_OR_HERE (exp), + "void value not ignored as it ought to be"); return error_mark_node; } exp = require_complete_type (exp); if (exp == error_mark_node) /home/manuel/void.c:6:12: error: void value not ignored as it ought to be if (voidf() < 0 ^ The location could be even better, but that is what the c-parser records. I like Clang's diagnostic much more: /home/manuel/void.c:6:15: error: invalid operands to binary expression ('void' and 'int') if (voidf() < 0 ~~~~~~~ ^ ~ It is similar to what g++ produces: /home/manuel/void.c:6:17: error: invalid operands of types ‘void’ and ‘int’ to binary ‘operator<’ if (voidf() < 0 ^ but with better locations.