diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-05-31 07:31:46 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-05-31 07:31:46 -0400 |
commit | 58cee64304cf9f429969083f1dee99d1c51cb2c5 (patch) | |
tree | aa989e4871fdfc5d9af15e064e6ff79256188d82 /gcc/c-common.c | |
parent | a0ab04225b160108387dd8ef44a4f149801d6bd9 (diff) | |
download | gcc-58cee64304cf9f429969083f1dee99d1c51cb2c5.zip gcc-58cee64304cf9f429969083f1dee99d1c51cb2c5.tar.gz gcc-58cee64304cf9f429969083f1dee99d1c51cb2c5.tar.bz2 |
(truthvalue_conversion, BIT_AND_EXPR): Make sure that the result has
boolean_type_node.
From-SVN: r9844
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r-- | gcc/c-common.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index acd66d0a..dac7d80 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -2103,8 +2103,11 @@ truthvalue_conversion (expr) TREE_OPERAND (expr, 1))), 1); case BIT_AND_EXPR: - if (integer_onep (TREE_OPERAND (expr, 1))) - return expr; + if (integer_onep (TREE_OPERAND (expr, 1)) + && TREE_TYPE (expr) != boolean_type_node) + /* Using convert here would cause infinite recursion. */ + return build1 (NOP_EXPR, boolean_type_node, expr); + break; case MODIFY_EXPR: if (warn_parentheses && C_EXP_ORIGINAL_CODE (expr) == MODIFY_EXPR) |