summaryrefslogtreecommitdiffstats
path: root/gcc/c-common.c
diff options
context:
space:
mode:
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-10 23:55:33 +0000
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-10 23:55:33 +0000
commitf6e28f725d9ecdb52b9a070990fb8169f256b7a3 (patch)
tree869cc91b1972ffac3cf80eb5fab7a17adaa61084 /gcc/c-common.c
parentbc8d52450b886e1344c7b7c0032e19a3c7c6d1cf (diff)
downloadppe42-gcc-f6e28f725d9ecdb52b9a070990fb8169f256b7a3.tar.gz
ppe42-gcc-f6e28f725d9ecdb52b9a070990fb8169f256b7a3.zip
PR c++/19355
* c-common.c (c_common_truthvalue_conversion): TRUTH_NOT_EXPR is a unary operator and can't be treated as a binary/comparison operator. * g++.dg/expr/pr19355-1.C: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93159 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r--gcc/c-common.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c
index a699cbcdc63..fd6df502ca9 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -2326,12 +2326,17 @@ c_common_truthvalue_conversion (tree expr)
case TRUTH_AND_EXPR:
case TRUTH_OR_EXPR:
case TRUTH_XOR_EXPR:
- case TRUTH_NOT_EXPR:
if (TREE_TYPE (expr) != truthvalue_type_node)
return build2 (TREE_CODE (expr), truthvalue_type_node,
TREE_OPERAND (expr, 0), TREE_OPERAND (expr, 1));
return expr;
+ case TRUTH_NOT_EXPR:
+ if (TREE_TYPE (expr) != truthvalue_type_node)
+ return build1 (TREE_CODE (expr), truthvalue_type_node,
+ TREE_OPERAND (expr, 0));
+ return expr;
+
case ERROR_MARK:
return expr;
OpenPOWER on IntegriCloud