OSDN Git Service

* dwarf2out.c (gen_typedef_die): Abort if we get identical
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 27 Jul 2000 18:22:39 +0000 (18:22 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 27 Jul 2000 18:22:39 +0000 (18:22 +0000)
        TREE_TYPE and DECL_ORIGINAL_TYPE on a typedef.

        * typeck.c (common_type): If we're just returning one of our
        arguments, don't strip typedef types.

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

gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/typeck.c
gcc/dwarf2out.c

index 53ad550..0cc077e 100644 (file)
@@ -1,3 +1,8 @@
+2000-07-27  Jason Merrill  <jason@redhat.com>
+
+       * dwarf2out.c (gen_typedef_die): Abort if we get identical
+       TREE_TYPE and DECL_ORIGINAL_TYPE on a typedef.
+
 2000-07-27  RodneyBrown  <RodneyBrown@pmsc.com>
 
        * expr.h (get_alias_set, lang_get_alias_set): Delete prototypes.
index 1ebe193..c981ca6 100644 (file)
@@ -1,3 +1,8 @@
+2000-07-27  Jason Merrill  <jason@redhat.com>
+
+       * typeck.c (common_type): If we're just returning one of our
+       arguments, don't strip typedef types.
+
 2000-07-26  Mark Mitchell  <mark@codesourcery.com>
 
        * decl.c (start_cleanup_fn): Mark the function as `inline'.
index e7f8d2f..0df8a03 100644 (file)
@@ -521,26 +521,27 @@ composite_pointer_type (t1, t2, arg1, arg2, location)
    converted to integer types.  */
 
 tree
-common_type (t1, t2)
-     tree t1, t2;
+common_type (orig_t1, orig_t2)
+     tree orig_t1, orig_t2;
 {
   register enum tree_code code1;
   register enum tree_code code2;
   tree attributes;
+  tree t1, t2;
 
   /* Save time if the two types are the same.  */
+  if (orig_t1 == orig_t2)
+    return orig_t1;
+  t1 = original_type (orig_t1);
+  t2 = original_type (orig_t2);
   if (t1 == t2)
-    return t1;
-  t1 = original_type (t1);
-  t2 = original_type (t2);
-  if (t1 == t2)
-    return t1;
+    return orig_t1;
 
   /* If one type is nonsense, use the other.  */
   if (t1 == error_mark_node)
-    return t2;
+    return orig_t2;
   if (t2 == error_mark_node)
-    return t1;
+    return orig_t1;
 
   if ((ARITHMETIC_TYPE_P (t1) || TREE_CODE (t1) == ENUMERAL_TYPE)
       && (ARITHMETIC_TYPE_P (t2) || TREE_CODE (t2) == ENUMERAL_TYPE))
index 01911a0..6b04b77 100644 (file)
@@ -9276,7 +9276,11 @@ gen_typedef_die (decl, context_die)
       if (DECL_ORIGINAL_TYPE (decl))
        {
          type = DECL_ORIGINAL_TYPE (decl);
-         equate_type_number_to_die (TREE_TYPE (decl), type_die);
+
+         if (type == TREE_TYPE (decl))
+           abort ();
+         else
+           equate_type_number_to_die (TREE_TYPE (decl), type_die);
        }
       else
        type = TREE_TYPE (decl);