]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
decl.c (gnat_to_gnu_entity): Use proper dummy type for the temporary COMPONENT_REF...
authorEric Botcazou <ebotcazou@adacore.com>
Sun, 19 Aug 2012 14:07:58 +0000 (14:07 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Sun, 19 Aug 2012 14:07:58 +0000 (14:07 +0000)
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Use proper
dummy type for the temporary COMPONENT_REF built for a derived tagged
type with discriminant.

From-SVN: r190514

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

index 711bea9be3a52a3d151a22832428aa743ed6a1a4..b9b63b145253596dbc7a478332cb485373bd2214 100644 (file)
@@ -1,3 +1,9 @@
+2012-08-19  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Use proper
+       dummy type for the temporary COMPONENT_REF built for a derived tagged
+       type with discriminant.
+
 2012-08-14   Diego Novillo  <dnovillo@google.com>
 
        Merge from cxx-conversion branch.  Re-implement VEC in C++.
index 9c44329f03853e1c18abee927bb2bd89bcecbfd6..cb0f074d7d2aed97602eb33fed5b10187b334b5e 100644 (file)
@@ -2988,6 +2988,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
        if (Present (Parent_Subtype (gnat_entity)))
          {
            Entity_Id gnat_parent = Parent_Subtype (gnat_entity);
+           tree gnu_dummy_parent_type = make_node (RECORD_TYPE);
            tree gnu_parent;
 
            /* A major complexity here is that the parent subtype will
@@ -2999,11 +3000,11 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
               each of those discriminants to a COMPONENT_REF of the above
               dummy parent referencing the corresponding discriminant of the
               base type of the parent subtype.  */
-           gnu_get_parent = build3 (COMPONENT_REF, void_type_node,
+           gnu_get_parent = build3 (COMPONENT_REF, gnu_dummy_parent_type,
                                     build0 (PLACEHOLDER_EXPR, gnu_type),
                                     build_decl (input_location,
                                                 FIELD_DECL, NULL_TREE,
-                                                void_type_node),
+                                                gnu_dummy_parent_type),
                                     NULL_TREE);
 
            if (has_discr)