trans.c (Subprogram_Body_to_gnu): Disregard inlining limits for expression functions.
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 9 Sep 2017 12:45:45 +0000 (12:45 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Sat, 9 Sep 2017 12:45:45 +0000 (12:45 +0000)
* gcc-interface/trans.c (Subprogram_Body_to_gnu): Disregard inlining
limits for expression functions.
(gnat_to_gnu) <N_Object_Declaration>: Fix formatting.

From-SVN: r251935

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

index f02fde2386040e07231f76e9a9b9220f30f5cbdc..804a79e1c1bf06f62162bb6d1f55912f73ec2cd3 100644 (file)
@@ -1,3 +1,9 @@
+2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/trans.c (Subprogram_Body_to_gnu): Disregard inlining
+       limits for expression functions.
+       (gnat_to_gnu) <N_Object_Declaration>: Fix formatting.
+
 2017-09-09  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Copy the
index 2f7d497b11be1b87124ebed3d9e275df9ff2decf..4536a76e6acb76695fcc896e44d2a4309433cbe6 100644 (file)
@@ -3777,6 +3777,11 @@ Subprogram_Body_to_gnu (Node_Id gnat_node)
   Sloc_to_locus (Sloc (gnat_node), &locus);
   DECL_SOURCE_LOCATION (gnu_subprog_decl) = locus;
 
+  /* If the body comes from an expression function, arrange it to be inlined
+     in almost all cases.  */
+  if (Was_Expression_Function (gnat_node))
+    DECL_DISREGARD_INLINE_LIMITS (gnu_subprog_decl) = 1;
+
   /* Initialize the information structure for the function.  */
   allocate_struct_function (gnu_subprog_decl, false);
   gnu_subprog_language = ggc_cleared_alloc<language_function> ();
@@ -6140,7 +6145,7 @@ gnat_to_gnu (Node_Id gnat_node)
          && (((Is_Array_Type (Etype (gnat_temp))
                || Is_Record_Type (Etype (gnat_temp)))
               && !Is_Constrained (Etype (gnat_temp)))
-           || Is_Concurrent_Type (Etype (gnat_temp))))
+             || Is_Concurrent_Type (Etype (gnat_temp))))
        break;
 
       if (Present (Expression (gnat_node))