This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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".  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]