From 257e61ed70f52c514f9486ee4d37a501245a069b Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Sat, 1 May 1993 04:09:06 +0000 Subject: [PATCH] (truthvalue_conversion): Specific error message when the "truthvalue" of a struct... (truthvalue_conversion): Specific error message when the "truthvalue" of a struct, union, or array type operand is needed. From-SVN: r4293 --- gcc/c-common.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gcc/c-common.c b/gcc/c-common.c index e4d161f75fd..f4a966e880a 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -955,6 +955,29 @@ truthvalue_conversion (expr) { register enum tree_code code; + if (TREE_CODE (expr) == ERROR_MARK) + return expr; + + /* These really should return error_mark_node after 2.4 is stable. + But not all callers handle ERROR_MARK properly. */ + switch (TREE_CODE (TREE_TYPE (expr))) + { + case RECORD_TYPE: + error ("struct type value used where scalar is required"); + return integer_zero_node; + + case UNION_TYPE: + error ("union type value used where scalar is required"); + return integer_zero_node; + + case ARRAY_TYPE: + error ("array type value used where scalar is required"); + return integer_zero_node; + + default: + break; + } + switch (TREE_CODE (expr)) { /* It is simpler and generates better code to have only TRUTH_*_EXPR -- 2.30.2