2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-04-15 16:10:41 +08:00

In gcc/: 2011-01-26 Nicola Pero <nicola.pero@meta-innovation.com>

In gcc/:
2011-01-26  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR c/43082
	* c-typeck.c (c_objc_common_truthvalue_conversion): If we are
	passed a VOID_TYPE expression, immediately emit an error and
	return error_mark_node.

In gcc/testsuite/:
2011-01-26  Nicola Pero  <nicola.pero@meta-innovation.com>
	    Andrew Pinski  <pinskia@gmail.com>

	PR c/43082
	* gcc.dg/pr43082.c: New.

Co-Authored-By: Andrew Pinski <pinskia@gmail.com>

From-SVN: r169319
This commit is contained in:
Nicola Pero 2011-01-27 02:09:13 +00:00 committed by Nicola Pero
parent 45d581f790
commit 04af87889f
4 changed files with 29 additions and 2 deletions

@ -1,3 +1,10 @@
2011-01-26 Nicola Pero <nicola.pero@meta-innovation.com>
PR c/43082
* c-typeck.c (c_objc_common_truthvalue_conversion): If we are
passed a VOID_TYPE expression, immediately emit an error and
return error_mark_node.
2011-01-26 Jeff Law <law@redhat.com>
PR rtl-optimization/47464

@ -10270,6 +10270,10 @@ c_objc_common_truthvalue_conversion (location_t location, tree expr)
error_at (location, "used union type value where scalar is required");
return error_mark_node;
case VOID_TYPE:
error_at (location, "void value not ignored as it ought to be");
return error_mark_node;
case FUNCTION_TYPE:
gcc_unreachable ();
@ -10282,8 +10286,8 @@ c_objc_common_truthvalue_conversion (location_t location, tree expr)
if (int_operands)
expr = remove_c_maybe_const_expr (expr);
/* ??? Should we also give an error for void and vectors rather than
leaving those to give errors later? */
/* ??? Should we also give an error for vectors rather than leaving
those to give errors later? */
expr = c_common_truthvalue_conversion (location, expr);
if (TREE_CODE (expr) == INTEGER_CST && int_operands && !int_const)

@ -1,3 +1,9 @@
2011-01-26 Nicola Pero <nicola.pero@meta-innovation.com>
Andrew Pinski <pinskia@gmail.com>
PR c/43082
* gcc.dg/pr43082.c: New.
2011-01-26 DJ Delorie <dj@redhat.com>
PR rtl-optimization/46878

@ -0,0 +1,10 @@
/* Test that the compiler does not crash when void expressions are
found inside conditional expressions. PR c/43082. */
/* { dg-do compile } */
void
foo (int x)
{
if (x ? (void)(0) : (void)(1)) /* { dg-error "void value not ignored as it ought to be" } */
;
}