utils.c (gnat_pushdecl): Set TYPE_CONTEXT for types attached to a TYPE_DECL.
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 3 Jul 2012 07:57:46 +0000 (07:57 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 3 Jul 2012 07:57:46 +0000 (07:57 +0000)
* gcc-interface/utils.c (gnat_pushdecl): Set TYPE_CONTEXT for types
attached to a TYPE_DECL.

From-SVN: r189195

gcc/ada/ChangeLog
gcc/ada/gcc-interface/utils.c

index 328e18574466f7e4e9de0c8b04ff33746ebf00e7..6dd84b588e5286e41ebf085bfdbd2ab4fbf806be 100644 (file)
@@ -1,3 +1,8 @@
+2012-07-03  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/utils.c (gnat_pushdecl): Set TYPE_CONTEXT for types
+       attached to a TYPE_DECL.
+
 2012-06-26  Vincent Pucci  <pucci@adacore.com>
 
        * exp_ch3.adb (Build_Init_Statements): Don't check the parents
index d2183bbe160648d09497ed3d764a568d9990a0d2..923fbd18bedac68ebb94f8c41cd7eacc411dafcc 100644 (file)
@@ -612,6 +612,7 @@ gnat_pushdecl (tree decl, Node_Id gnat_node)
              if (TREE_CODE (t) == POINTER_TYPE)
                TYPE_NEXT_PTR_TO (t) = tt;
              TYPE_NAME (tt) = DECL_NAME (decl);
+             TYPE_CONTEXT (tt) = DECL_CONTEXT (decl);
              TYPE_STUB_DECL (tt) = TYPE_STUB_DECL (t);
              DECL_ORIGINAL_TYPE (decl) = tt;
            }
@@ -621,6 +622,7 @@ gnat_pushdecl (tree decl, Node_Id gnat_node)
          /* We need a variant for the placeholder machinery to work.  */
          tree tt = build_variant_type_copy (t);
          TYPE_NAME (tt) = decl;
+         TYPE_CONTEXT (tt) = DECL_CONTEXT (decl);
          TREE_USED (tt) = TREE_USED (t);
          TREE_TYPE (decl) = tt;
          if (DECL_ORIGINAL_TYPE (TYPE_NAME (t)))
@@ -640,7 +642,10 @@ gnat_pushdecl (tree decl, Node_Id gnat_node)
       if (t)
        for (t = TYPE_MAIN_VARIANT (t); t; t = TYPE_NEXT_VARIANT (t))
          if (!(TYPE_NAME (t) && TREE_CODE (TYPE_NAME (t)) == TYPE_DECL))
-           TYPE_NAME (t) = decl;
+           {
+             TYPE_NAME (t) = decl;
+             TYPE_CONTEXT (t) = DECL_CONTEXT (decl);
+           }
     }
 }
 \f