Hi, I'm wondering why for Ada boolean_true_node has a value that is not in the range of the Ada type but is, for the specific case, 255 instead of 1. Is there a specific reason for that?
Does the following patch make sense (untested)? Btw, I wonder if Ada cannot simply use its own boolean_type_node global tree and leave the middle-ends boolean_type_node alone, which is supposed to match the C ABI of the target. Thanks, Richard. Index: gcc/ada/gcc-interface/misc.c =================================================================== --- gcc/ada/gcc-interface/misc.c (revision 176266) +++ gcc/ada/gcc-interface/misc.c (working copy) @@ -323,7 +323,7 @@ gnat_init (void) SET_TYPE_RM_MAX_VALUE (boolean_type_node, build_int_cst (boolean_type_node, 1)); SET_TYPE_RM_SIZE (boolean_type_node, bitsize_int (1)); - boolean_true_node = TYPE_MAX_VALUE (boolean_type_node); + boolean_true_node = TYPE_RM_MAX_VALUE (boolean_type_node); boolean_false_node = TYPE_MIN_VALUE (boolean_type_node); sbitsize_one_node = sbitsize_int (1);