OSDN Git Service

(truthvalue_conversion): Specific error message when the
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 1 May 1993 04:09:06 +0000 (04:09 +0000)
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 1 May 1993 04:09:06 +0000 (04:09 +0000)
"truthvalue" of a struct, union, or array type operand is needed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@4293 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/c-common.c

index e4d161f..f4a966e 100644 (file)
@@ -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