From: Nicola Pero Date: Thu, 27 Jan 2011 02:09:13 +0000 (+0000) Subject: In gcc/: 2011-01-26 Nicola Pero X-Git-Tag: releases/gcc-4.6.0~928 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=04af87889f708b66bf19c4ba9f65b7b1e8f18e34;p=thirdparty%2Fgcc.git In gcc/: 2011-01-26 Nicola Pero In gcc/: 2011-01-26 Nicola Pero 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 Andrew Pinski PR c/43082 * gcc.dg/pr43082.c: New. Co-Authored-By: Andrew Pinski From-SVN: r169319 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 35e555b71a57..c0389d48b95c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-01-26 Nicola Pero + + 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 PR rtl-optimization/47464 diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 689423ea0281..a22bb737533a 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -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) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a4ed36535de4..6835c1956afb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2011-01-26 Nicola Pero + Andrew Pinski + + PR c/43082 + * gcc.dg/pr43082.c: New. + 2011-01-26 DJ Delorie PR rtl-optimization/46878 diff --git a/gcc/testsuite/gcc.dg/pr43082.c b/gcc/testsuite/gcc.dg/pr43082.c new file mode 100644 index 000000000000..a6e00461673c --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr43082.c @@ -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" } */ + ; +}