bool changes

From-SVN: r8788
This commit is contained in:
Jason Merrill 1995-01-21 10:14:41 +00:00 committed by Jason Merrill
parent 2aec5b7a12
commit 255512c1d3
4 changed files with 40 additions and 20 deletions

View File

@ -1,3 +1,19 @@
Tue Jan 17 14:12:00 1995 Jason Merrill <jason@phydeaux.cygnus.com>
* cvt.c (cp_convert): Just call truthvalue_conversion to convert to
bool.
Mon Jan 16 13:28:48 1995 Jason Merrill <jason@phydeaux.cygnus.com>
* various: Use boolean_type_node, boolean_true_node,
boolean_false_node.
Sun Jan 15 22:17:32 1995 Jason Merrill <jason@phydeaux.cygnus.com>
* decl.c (BOOL_TYPE_SIZE): Defaults to BITS_PER_WORD.
(init_decl_processing): Use BOOL_TYPE_SIZE instead of CHAR_TYPE_SIZE
for bool.
Fri Dec 30 12:22:29 1994 Mike Stump <mrs@cygnus.com>
* decl.c (n_incomplete): Bump n_incomplete up to int to match C

View File

@ -93,6 +93,10 @@ static struct stack_level *decl_stack;
#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
#endif
#ifndef BOOL_TYPE_SIZE
#define BOOL_TYPE_SIZE BITS_PER_WORD
#endif
/* We let tm.h override the types used here, to handle trivial differences
such as the choice of unsigned int or long unsigned int for size_t.
When machines start needing nontrivial differences in the size type,
@ -207,7 +211,7 @@ tree int_array_type_node;
tree wchar_array_type_node;
/* The bool data type, and constants */
tree bool_type_node, true_node, false_node;
tree boolean_type_node, boolean_true_node, boolean_false_node;
/* type `int ()' -- used for implicit declaration of functions. */
@ -4378,13 +4382,13 @@ init_decl_processing ()
integer_three_node = build_int_2 (3, 0);
TREE_TYPE (integer_three_node) = integer_type_node;
bool_type_node = make_unsigned_type (CHAR_TYPE_SIZE);
TREE_SET_CODE (bool_type_node, BOOLEAN_TYPE);
record_builtin_type (RID_BOOL, "bool", bool_type_node);
false_node = build_int_2 (0, 0);
TREE_TYPE (false_node) = bool_type_node;
true_node = build_int_2 (1, 0);
TREE_TYPE (true_node) = bool_type_node;
boolean_type_node = make_unsigned_type (BOOL_TYPE_SIZE);
TREE_SET_CODE (boolean_type_node, BOOLEAN_TYPE);
record_builtin_type (RID_BOOL, "bool", boolean_type_node);
boolean_false_node = build_int_2 (0, 0);
TREE_TYPE (boolean_false_node) = boolean_type_node;
boolean_true_node = build_int_2 (1, 0);
TREE_TYPE (boolean_true_node) = boolean_type_node;
/* These are needed by stor-layout.c. */
size_zero_node = size_int (0);

View File

@ -937,7 +937,7 @@ paren_expr_or_null:
cond_stmt_keyword);
$$ = integer_zero_node; }
| '(' expr ')'
{ $$ = build1 (CLEANUP_POINT_EXPR, bool_type_node,
{ $$ = build1 (CLEANUP_POINT_EXPR, boolean_type_node,
bool_truthvalue_conversion ($2)); }
;
@ -947,7 +947,7 @@ paren_cond_or_null:
cond_stmt_keyword);
$$ = integer_zero_node; }
| '(' condition ')'
{ $$ = build1 (CLEANUP_POINT_EXPR, bool_type_node,
{ $$ = build1 (CLEANUP_POINT_EXPR, boolean_type_node,
bool_truthvalue_conversion ($2)); }
;
@ -955,7 +955,7 @@ xcond:
/* empty */
{ $$ = NULL_TREE; }
| condition
{ $$ = build1 (CLEANUP_POINT_EXPR, bool_type_node,
{ $$ = build1 (CLEANUP_POINT_EXPR, boolean_type_node,
bool_truthvalue_conversion ($$)); }
| error
{ $$ = NULL_TREE; }
@ -1664,9 +1664,9 @@ delete: DELETE
boolean.literal:
CXX_TRUE
{ $$ = true_node; }
{ $$ = boolean_true_node; }
| CXX_FALSE
{ $$ = false_node; }
{ $$ = boolean_false_node; }
;
/* Produces a STRING_CST with perhaps more STRING_CSTs chained onto it. */

View File

@ -2740,7 +2740,7 @@ build_binary_op (code, arg1, arg2, convert_p)
types[0] = type1; types[1] = type2;
if (code == TRUTH_ANDIF_EXPR || code == TRUTH_ORIF_EXPR)
try = build_type_conversion (code, bool_type_node,
try = build_type_conversion (code, boolean_type_node,
args[convert_index], 1);
else
{
@ -2975,7 +2975,7 @@ build_binary_op_nodefault (code, orig_op0, orig_op1, error_code)
case TRUTH_ORIF_EXPR:
case TRUTH_AND_EXPR:
case TRUTH_OR_EXPR:
result_type = bool_type_node;
result_type = boolean_type_node;
op0 = bool_truthvalue_conversion (op0);
op1 = bool_truthvalue_conversion (op1);
converted = 1;
@ -3059,7 +3059,7 @@ build_binary_op_nodefault (code, orig_op0, orig_op1, error_code)
case EQ_EXPR:
case NE_EXPR:
result_type = bool_type_node;
result_type = boolean_type_node;
converted = 1;
if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE)
&& (code1 == INTEGER_TYPE || code1 == REAL_TYPE))
@ -3251,7 +3251,7 @@ build_binary_op_nodefault (code, orig_op0, orig_op1, error_code)
case GE_EXPR:
case LT_EXPR:
case GT_EXPR:
result_type = bool_type_node;
result_type = boolean_type_node;
if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE)
&& (code1 == INTEGER_TYPE || code1 == REAL_TYPE))
short_compare = 1;
@ -3437,8 +3437,8 @@ build_binary_op_nodefault (code, orig_op0, orig_op1, error_code)
tree val
= shorten_compare (&xop0, &xop1, &xresult_type, &xresultcode);
if (val != 0)
return convert (bool_type_node, val);
op0 = xop0, op1 = xop1, result_type = bool_type_node;
return convert (boolean_type_node, val);
op0 = xop0, op1 = xop1, result_type = boolean_type_node;
resultcode = xresultcode;
}
@ -3776,7 +3776,7 @@ bool_truthvalue_conversion (expr)
/* We really want to preform the optimizations in truthvalue_conversion
but, not this way. */
/* expr = truthvalue_conversion (expr); */
return convert (bool_type_node, expr);
return convert (boolean_type_node, expr);
}
/* C++: Must handle pointers to members.