From 4304395d8602b0913bcfb1e65984e3aefa5bcf69 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Sun, 10 Oct 2010 11:47:29 +0000 Subject: decl.c (gnat_to_gnu_entity): Add assertion on the types of the parameters. * gcc-interface/decl.c (gnat_to_gnu_entity) : Add assertion on the types of the parameters. Use KIND local variable. : Likewise. From-SVN: r165251 --- gcc/ada/ChangeLog | 6 ++++++ gcc/ada/gcc-interface/decl.c | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 31316e2..7f6d18e 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5 +1,11 @@ 2010-10-10 Eric Botcazou + * gcc-interface/decl.c (gnat_to_gnu_entity) : Add + assertion on the types of the parameters. Use KIND local variable. + : Likewise. + +2010-10-10 Eric Botcazou + * 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. diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 98ca932..1719d1c 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -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) -- cgit v1.1