Commit 4304395d by Eric Botcazou Committed by Eric Botcazou

decl.c (gnat_to_gnu_entity): Add assertion on the types of the parameters.

	* 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
parent 0c700259
2010-10-10 Eric Botcazou <ebotcazou@adacore.com> 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/ada-tree.h (DECL_BY_DOUBLE_REF_P): New macro.
* gcc-interface/gigi.h (annotate_object): Add BY_DOUBLE_REF parameter. * gcc-interface/gigi.h (annotate_object): Add BY_DOUBLE_REF parameter.
* gcc-interface/decl.c (annotate_object): Likewise and handle it. * gcc-interface/decl.c (annotate_object): Likewise and handle it.
......
...@@ -4149,6 +4149,11 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) ...@@ -4149,6 +4149,11 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
gnu_param = NULL_TREE; 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 (gnu_param)
{ {
/* If it's an exported subprogram, we build a parameter list /* 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) ...@@ -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_stub_param_list = nreverse (gnu_stub_param_list);
gnu_cico_list = nreverse (gnu_cico_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 Set_Mechanism (gnat_entity, return_unconstrained_p
|| return_by_direct_ref_p || return_by_direct_ref_p
|| return_by_invisi_ref_p || return_by_invisi_ref_p
...@@ -4396,8 +4401,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) ...@@ -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 full view, whichever is present. This is used in all the tests
below. */ below. */
Entity_Id full_view Entity_Id full_view
= (IN (Ekind (gnat_entity), Incomplete_Kind) = (IN (kind, Incomplete_Kind) && From_With_Type (gnat_entity))
&& From_With_Type (gnat_entity))
? Non_Limited_View (gnat_entity) ? Non_Limited_View (gnat_entity)
: Present (Full_View (gnat_entity)) : Present (Full_View (gnat_entity))
? Full_View (gnat_entity) ? Full_View (gnat_entity)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment