diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2010-04-16 12:07:02 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2010-04-16 12:07:02 +0000 |
commit | 1139f2e89d9e5199b66b05caba688be566561f1f (patch) | |
tree | e240b2394edcddd159a273da457f7a4e17a8d5c9 /gcc/ada/gcc-interface/decl.c | |
parent | d88bbbb943151cd73871f5ece8bac7f4127f76bd (diff) | |
download | gcc-1139f2e89d9e5199b66b05caba688be566561f1f.zip gcc-1139f2e89d9e5199b66b05caba688be566561f1f.tar.gz gcc-1139f2e89d9e5199b66b05caba688be566561f1f.tar.bz2 |
decl.c (gnat_to_gnu_entity): Use boolean_type_node in lieu of integer_type_node for boolean operations.
* gcc-interface/decl.c (gnat_to_gnu_entity): Use boolean_type_node in
lieu of integer_type_node for boolean operations.
(choices_to_gnu): Likewise.
* gcc-interface/trans.c (Attribute_to_gnu): Likewise.
(Loop_Statement_to_gnu): Likewise.
(establish_gnat_vms_condition_handler): Likewise.
(Exception_Handler_to_gnu_sjlj): Likewise.
(gnat_to_gnu): Likewise.
(build_unary_op_trapv): Likewise.
(build_binary_op_trapv): Likewise.
(emit_range_check): Likewise.
(emit_index_check): Likewise.
(convert_with_check): Likewise.
* gcc-interface/utils.c (convert_vms_descriptor64): Likewise.
(convert_vms_descriptor32): Likewise.
(convert_vms_descriptor): Likewise.
* gcc-interface/utils2.c (nonbinary_modular_operation): Likewise.
(compare_arrays): Use boolean instead of integer constants.
(build_binary_op) <TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR,
TRUTH_OR_EXPR, TRUTH_XOR_EXPR>: New case. Check that the result type
is a boolean type.
<GE_EXPR, LE_EXPR, GT_EXPR, LT_EXPR>: Remove obsolete assertion.
<EQ_EXPR, NE_EXPR>: Check that the result type is a boolean type.
<PREINC/PREDECREMENT_EXPR, POSTINC/POSTDECREMENT_EXPR>: Delete.
<TRUTH_NOT_EXPR>: Check that the result type is a boolean type.
(build_unary_op): Use boolean_type_node in lieu of integer_type_node
for boolean operations.
(fill_vms_descriptor): Likewise. Fix formatting nits.
From-SVN: r158411
Diffstat (limited to 'gcc/ada/gcc-interface/decl.c')
-rw-r--r-- | gcc/ada/gcc-interface/decl.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 1a42ff7..4db6c11 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -1916,7 +1916,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) /* Compute the size of this dimension. */ gnu_max = build3 (COND_EXPR, gnu_index_base_type, - build2 (GE_EXPR, integer_type_node, gnu_high, gnu_low), + build2 (GE_EXPR, boolean_type_node, gnu_high, gnu_low), gnu_high, build2 (MINUS_EXPR, gnu_index_base_type, gnu_low, fold_convert (gnu_index_base_type, @@ -2214,7 +2214,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) gnu_high = build_cond_expr (sizetype, build_binary_op (GE_EXPR, - integer_type_node, + boolean_type_node, gnu_orig_max, gnu_orig_min), gnu_max, gnu_high); @@ -6335,13 +6335,11 @@ choices_to_gnu (tree operand, Node_Id choices) low = gnat_to_gnu (Low_Bound (choice)); high = gnat_to_gnu (High_Bound (choice)); - /* There's no good type to use here, so we might as well use - integer_type_node. */ this_test - = build_binary_op (TRUTH_ANDIF_EXPR, integer_type_node, - build_binary_op (GE_EXPR, integer_type_node, + = build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node, + build_binary_op (GE_EXPR, boolean_type_node, operand, low), - build_binary_op (LE_EXPR, integer_type_node, + build_binary_op (LE_EXPR, boolean_type_node, operand, high)); break; @@ -6352,10 +6350,10 @@ choices_to_gnu (tree operand, Node_Id choices) high = gnat_to_gnu (High_Bound (gnat_temp)); this_test - = build_binary_op (TRUTH_ANDIF_EXPR, integer_type_node, - build_binary_op (GE_EXPR, integer_type_node, + = build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node, + build_binary_op (GE_EXPR, boolean_type_node, operand, low), - build_binary_op (LE_EXPR, integer_type_node, + build_binary_op (LE_EXPR, boolean_type_node, operand, high)); break; @@ -6373,10 +6371,10 @@ choices_to_gnu (tree operand, Node_Id choices) high = TYPE_MAX_VALUE (type); this_test - = build_binary_op (TRUTH_ANDIF_EXPR, integer_type_node, - build_binary_op (GE_EXPR, integer_type_node, + = build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node, + build_binary_op (GE_EXPR, boolean_type_node, operand, low), - build_binary_op (LE_EXPR, integer_type_node, + build_binary_op (LE_EXPR, boolean_type_node, operand, high)); break; } @@ -6386,7 +6384,7 @@ choices_to_gnu (tree operand, Node_Id choices) case N_Character_Literal: case N_Integer_Literal: single = gnat_to_gnu (choice); - this_test = build_binary_op (EQ_EXPR, integer_type_node, operand, + this_test = build_binary_op (EQ_EXPR, boolean_type_node, operand, single); break; @@ -6398,8 +6396,8 @@ choices_to_gnu (tree operand, Node_Id choices) gcc_unreachable (); } - result = build_binary_op (TRUTH_ORIF_EXPR, integer_type_node, - result, this_test); + result = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node, result, + this_test); } return result; |