diff options
author | Jason Merrill <merrill@gnu.org> | 1995-01-20 05:57:47 +0000 |
---|---|---|
committer | Jason Merrill <merrill@gnu.org> | 1995-01-20 05:57:47 +0000 |
commit | 28ed46164618631d07f5ddee9a9743c378d6cbcc (patch) | |
tree | 1d8b77268b5d4718a10cb4dda8c5da37d52a6f77 /gcc | |
parent | 46299de919c7e2d651b606c45f4327438ef8d6b7 (diff) | |
download | gcc-28ed46164618631d07f5ddee9a9743c378d6cbcc.zip gcc-28ed46164618631d07f5ddee9a9743c378d6cbcc.tar.gz gcc-28ed46164618631d07f5ddee9a9743c378d6cbcc.tar.bz2 |
bool changes
From-SVN: r8775
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/cp-tree.h | 2 | ||||
-rw-r--r-- | gcc/cp/cvt.c | 26 |
2 files changed, 6 insertions, 22 deletions
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 8b50002..f3d3764 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -1439,7 +1439,7 @@ extern tree delta_type_node; extern tree long_long_integer_type_node, long_long_unsigned_type_node; /* For building calls to `delete'. */ extern tree integer_two_node, integer_three_node; -extern tree bool_type_node, true_node, false_node; +extern tree boolean_type_node, boolean_true_node, boolean_false_node; /* in pt.c */ /* PARM_VEC is a vector of template parameters, either IDENTIFIER_NODEs or diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c index 01d0a3d..4883e7b 100644 --- a/gcc/cp/cvt.c +++ b/gcc/cp/cvt.c @@ -1246,23 +1246,7 @@ cp_convert (type, expr, convtype, flags) return error_mark_node; } if (code == BOOLEAN_TYPE) - { - tree newe = truthvalue_conversion (e); - /* Avoid stupid (infinite) recursion from backend. */ - if (TREE_CODE (newe) != NOP_EXPR || e != TREE_OPERAND (newe, 0)) - e = newe; - if (TREE_TYPE (e) == bool_type_node) - return e; - else if (TREE_CODE (e) == INTEGER_CST) - { - if (e == integer_zero_node) - e = false_node; - else - e = true_node; - } - else - return build1 (NOP_EXPR, bool_type_node, e); - } + return truthvalue_conversion (e); return fold (convert_to_integer (type, e)); } if (code == POINTER_TYPE) @@ -1907,8 +1891,8 @@ build_default_binary_type_conversion (code, arg1, arg2) if (code == TRUTH_ANDIF_EXPR || code == TRUTH_ORIF_EXPR) { - *arg1 = convert (bool_type_node, *arg1); - *arg2 = convert (bool_type_node, *arg2); + *arg1 = convert (boolean_type_node, *arg1); + *arg2 = convert (boolean_type_node, *arg2); } else if (TYPE_HAS_INT_CONVERSION (type1)) { @@ -1971,7 +1955,7 @@ build_default_unary_type_conversion (code, arg) } if (code == TRUTH_NOT_EXPR) - *arg = convert (bool_type_node, *arg); + *arg = convert (boolean_type_node, *arg); else if (TYPE_HAS_INT_CONVERSION (type)) { if (TYPE_HAS_REAL_CONVERSION (type)) @@ -2006,7 +1990,7 @@ type_promotes_to (type) /* bool always promotes to int (not unsigned), even if it's the same size. */ - if (type == bool_type_node) + if (type == boolean_type_node) type = integer_type_node; /* Normally convert enums to int, but convert wide enums to something |