aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/trans.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@gcc.gnu.org>2011-03-26 09:34:40 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2011-03-26 09:34:40 +0000
commit5daed84a544a8e2bd3017ad77975abd9831953b7 (patch)
tree26ba2a9b9f6a154eeaec3ba42d01da1e79061f7a /gcc/ada/gcc-interface/trans.c
parent530f4f437a8d592e8203a40a860f246c7e1cdfca (diff)
downloadgcc-5daed84a544a8e2bd3017ad77975abd9831953b7.zip
gcc-5daed84a544a8e2bd3017ad77975abd9831953b7.tar.gz
gcc-5daed84a544a8e2bd3017ad77975abd9831953b7.tar.bz2
inline.adb (Back_End_Cannot_Inline): Lift restriction on calls to subprograms without a previous spec declared in...
* inline.adb (Back_End_Cannot_Inline): Lift restriction on calls to subprograms without a previous spec declared in the same unit. * gcc-interface/trans.c (Compilation_Unit_to_gnu): Process inlined subprograms at the end of the unit instead of at the beginning. * gcc-interface/utils.c (create_subprog_decl): Check that the entity isn't public for the special handling of non-inline functions nested inside inline external functions. From-SVN: r171551
Diffstat (limited to 'gcc/ada/gcc-interface/trans.c')
-rw-r--r--gcc/ada/gcc-interface/trans.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index ab0725b..f6d83af 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -3793,6 +3793,20 @@ Compilation_Unit_to_gnu (Node_Id gnat_node)
finalize_from_with_types ();
}
+ if (type_annotate_only && gnat_node == Cunit (Main_Unit))
+ {
+ elaborate_all_entities (gnat_node);
+
+ if (Nkind (Unit (gnat_node)) == N_Subprogram_Declaration
+ || Nkind (Unit (gnat_node)) == N_Generic_Package_Declaration
+ || Nkind (Unit (gnat_node)) == N_Generic_Subprogram_Declaration)
+ return;
+ }
+
+ process_decls (Declarations (Aux_Decls_Node (gnat_node)), Empty, Empty,
+ true, true);
+ add_stmt (gnat_to_gnu (Unit (gnat_node)));
+
/* If we can inline, generate code for all the inlined subprograms. */
if (optimize)
{
@@ -3822,20 +3836,6 @@ Compilation_Unit_to_gnu (Node_Id gnat_node)
}
}
- if (type_annotate_only && gnat_node == Cunit (Main_Unit))
- {
- elaborate_all_entities (gnat_node);
-
- if (Nkind (Unit (gnat_node)) == N_Subprogram_Declaration
- || Nkind (Unit (gnat_node)) == N_Generic_Package_Declaration
- || Nkind (Unit (gnat_node)) == N_Generic_Subprogram_Declaration)
- return;
- }
-
- process_decls (Declarations (Aux_Decls_Node (gnat_node)), Empty, Empty,
- true, true);
- add_stmt (gnat_to_gnu (Unit (gnat_node)));
-
/* Process any pragmas and actions following the unit. */
add_stmt_list (Pragmas_After (Aux_Decls_Node (gnat_node)));
add_stmt_list (Actions (Aux_Decls_Node (gnat_node)));