diff options
author | Roger Sayle <roger@eyesopen.com> | 2005-01-10 23:55:33 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2005-01-10 23:55:33 +0000 |
commit | 18d002058ed0df083dc7cfa05dd3edd4849467f9 (patch) | |
tree | 869cc91b1972ffac3cf80eb5fab7a17adaa61084 /gcc/c-common.c | |
parent | 316e72f2dd7293b52b55ac420529480538f07cf6 (diff) | |
download | gcc-18d002058ed0df083dc7cfa05dd3edd4849467f9.zip gcc-18d002058ed0df083dc7cfa05dd3edd4849467f9.tar.gz gcc-18d002058ed0df083dc7cfa05dd3edd4849467f9.tar.bz2 |
re PR c++/19355 (ICE: tree check at c-common.c:2332)
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.
From-SVN: r93159
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r-- | gcc/c-common.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index a699cbc..fd6df50 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; |