This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix PR35469, revert jboolean semantics changes
- From: Richard Guenther <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Cc: aph at gcc dot gnu dot org
- Date: Tue, 11 Mar 2008 10:50:43 +0100 (CET)
- Subject: [PATCH] Fix PR35469, revert jboolean semantics changes
I will bootstrap & test the following for the 4.3 branch and the trunk.
Andrew, is this ok with you? It reverts jboolean back to be a single
bit integer, and g++ will actually enforce that single-bitness since
4.3. I don't know if that makes the most sense, or if just making
it an integer of the same precision as its mode (that is, 8 bits on
any target but darwin(?)).
Thanks,
Richard.
2008-03-11 Richard Guenther <rguenther@suse.de>
PR c++/35469
Revert:
2008-02-04 Richard Guenther <rguenther@suse.de>
PR java/35035
* decl.c (record_builtin_java_type): Make jboolean a
integer type again where its mode doesn't match that of bool.
2008-01-25 Richard Guenther <rguenther@suse.de>
PR c++/33887
* decl.c (record_builtin_java_type): Make __java_boolean
a variant of bool.
* typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
after TYPE_MAIN_VARIANT check.
Index: cp/typeck.c
===================================================================
*** cp/typeck.c (revision 133101)
--- cp/typeck.c (working copy)
*************** structural_comptypes (tree t1, tree t2,
*** 962,967 ****
--- 962,969 ----
if (TREE_CODE (t1) != ARRAY_TYPE
&& TYPE_QUALS (t1) != TYPE_QUALS (t2))
return false;
+ if (TYPE_FOR_JAVA (t1) != TYPE_FOR_JAVA (t2))
+ return false;
/* Allow for two different type nodes which have essentially the same
definition. Note that we already checked for equality of the type
*************** structural_comptypes (tree t1, tree t2,
*** 971,979 ****
&& TYPE_MAIN_VARIANT (t1) == TYPE_MAIN_VARIANT (t2))
return true;
- if (TYPE_FOR_JAVA (t1) != TYPE_FOR_JAVA (t2))
- return false;
-
/* Compare the types. Break out if they could be the same. */
switch (TREE_CODE (t1))
{
--- 973,978 ----
Index: cp/decl.c
===================================================================
*** cp/decl.c (revision 133101)
--- cp/decl.c (working copy)
*************** record_builtin_java_type (const char* na
*** 3159,3177 ****
tree type, decl;
if (size > 0)
type = make_signed_type (size);
- else if (size == -1)
- { /* "__java_boolean". */
- if ((TYPE_MODE (boolean_type_node)
- == smallest_mode_for_size (1, MODE_INT)))
- type = build_variant_type_copy (boolean_type_node);
- else
- /* ppc-darwin has SImode bool, make jboolean a 1-bit
- integer type without boolean semantics there. */
- type = make_unsigned_type (1);
- }
else if (size > -32)
! { /* "__java_char". */
type = make_unsigned_type (-size);
}
else
{ /* "__java_float" or ""__java_double". */
--- 3159,3168 ----
tree type, decl;
if (size > 0)
type = make_signed_type (size);
else if (size > -32)
! { /* "__java_char" or ""__java_boolean". */
type = make_unsigned_type (-size);
+ /*if (size == -1) TREE_SET_CODE (type, BOOLEAN_TYPE);*/
}
else
{ /* "__java_float" or ""__java_double". */