decl.c (gnat_to_gnu_entity): Add assertion on the types of the parameters.
authorEric Botcazou <ebotcazou@adacore.com>
Sun, 10 Oct 2010 11:47:29 +0000 (11:47 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Sun, 10 Oct 2010 11:47:29 +0000 (11:47 +0000)
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Add
assertion on the types of the parameters.  Use KIND local variable.
<E_Incomplete_Type>: Likewise.

From-SVN: r165251

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

index 31316e2..7f6d18e 100644 (file)
@@ -1,5 +1,11 @@
 2010-10-10  Eric Botcazou  <ebotcazou@adacore.com>
 
+       * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Add
+       assertion on the types of the parameters.  Use KIND local variable.
+       <E_Incomplete_Type>: Likewise.
+
+2010-10-10  Eric Botcazou  <ebotcazou@adacore.com>
+
        * gcc-interface/ada-tree.h (DECL_BY_DOUBLE_REF_P): New macro.
        * gcc-interface/gigi.h (annotate_object): Add BY_DOUBLE_REF parameter.
        * gcc-interface/decl.c (annotate_object): Likewise and handle it.
index 98ca932..1719d1c 100644 (file)
@@ -4149,6 +4149,11 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
                gnu_param = NULL_TREE;
              }
 
+           /* The failure of this assertion will very likely come from an
+              order of elaboration issue for the type of the parameter.  */
+           gcc_assert (kind == E_Subprogram_Type
+                       || !TYPE_IS_DUMMY_P (gnu_param_type));
+
            if (gnu_param)
              {
                /* If it's an exported subprogram, we build a parameter list
@@ -4246,7 +4251,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
          gnu_stub_param_list = nreverse (gnu_stub_param_list);
        gnu_cico_list = nreverse (gnu_cico_list);
 
-       if (Ekind (gnat_entity) == E_Function)
+       if (kind == E_Function)
          Set_Mechanism (gnat_entity, return_unconstrained_p
                                      || return_by_direct_ref_p
                                      || return_by_invisi_ref_p
@@ -4396,8 +4401,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
           full view, whichever is present.  This is used in all the tests
           below.  */
        Entity_Id full_view
-         = (IN (Ekind (gnat_entity), Incomplete_Kind)
-            && From_With_Type (gnat_entity))
+         = (IN (kind, Incomplete_Kind) && From_With_Type (gnat_entity))
            ? Non_Limited_View (gnat_entity)
            : Present (Full_View (gnat_entity))
              ? Full_View (gnat_entity)