aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <merrill@gnu.org>1995-01-20 05:57:47 +0000
committerJason Merrill <merrill@gnu.org>1995-01-20 05:57:47 +0000
commit28ed46164618631d07f5ddee9a9743c378d6cbcc (patch)
tree1d8b77268b5d4718a10cb4dda8c5da37d52a6f77 /gcc
parent46299de919c7e2d651b606c45f4327438ef8d6b7 (diff)
downloadgcc-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.h2
-rw-r--r--gcc/cp/cvt.c26
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