OSDN Git Service

2008-01-25 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Jan 2008 21:20:00 +0000 (21:20 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Jan 2008 21:20:00 +0000 (21:20 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131840 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/typeck.c

index 22afe19..e8d8adf 100644 (file)
@@ -1,3 +1,11 @@
+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.
+
 2008-01-25  Jason Merrill  <jason@redhat.com>
 
        * decl2.c (is_late_template_attribute): Don't defer attribute
index 4640adf..8fa0825 100644 (file)
@@ -3159,10 +3159,13 @@ record_builtin_java_type (const char* name, int size)
   tree type, decl;
   if (size > 0)
     type = make_signed_type (size);
+  else if (size == -1)
+    { /* "__java_boolean".  */
+      type = build_variant_type_copy (boolean_type_node);
+    }
   else if (size > -32)
-    { /* "__java_char" or ""__java_boolean".  */
+    { /* "__java_char".  */
       type = make_unsigned_type (-size);
-      /*if (size == -1)        TREE_SET_CODE (type, BOOLEAN_TYPE);*/
     }
   else
     { /* "__java_float" or ""__java_double".  */
index 6557637..d75f4e4 100644 (file)
@@ -962,8 +962,6 @@ structural_comptypes (tree t1, tree t2, int strict)
   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
@@ -973,6 +971,9 @@ structural_comptypes (tree t1, tree t2, int strict)
       && 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))
     {