From: ebotcazou Date: Tue, 3 Jul 2012 07:57:46 +0000 (+0000) Subject: * gcc-interface/utils.c (gnat_pushdecl): Set TYPE_CONTEXT for types X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=66f0b044319a0853c186863587fc99d5cd5037aa;p=thirdparty%2Fgcc.git * gcc-interface/utils.c (gnat_pushdecl): Set TYPE_CONTEXT for types attached to a TYPE_DECL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@189195 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 328e18574466..6dd84b588e52 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2012-07-03 Eric Botcazou + + * gcc-interface/utils.c (gnat_pushdecl): Set TYPE_CONTEXT for types + attached to a TYPE_DECL. + 2012-06-26 Vincent Pucci * exp_ch3.adb (Build_Init_Statements): Don't check the parents diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c index d2183bbe1606..923fbd18beda 100644 --- a/gcc/ada/gcc-interface/utils.c +++ b/gcc/ada/gcc-interface/utils.c @@ -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); + } } }