[COMMITTED] ada: Refining handling of inlining for CCG

Message ID 20230529082906.2409579-1-poulhies@adacore.com
State Committed
Commit 41448347f4464bceed9c09d9f1401c40118b8797
Headers
Series [COMMITTED] ada: Refining handling of inlining for CCG |

Commit Message

Marc Poulhiès May 29, 2023, 8:29 a.m. UTC
  From: Arnaud Charlet <charlet@adacore.com>

By marking relevant functions inline when -gnatn is used.

gcc/ada/

	* sem_ch7.adb: Refine handling of inlining for CCG

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/sem_ch7.adb | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
  

Patch

diff --git a/gcc/ada/sem_ch7.adb b/gcc/ada/sem_ch7.adb
index aed09f30934..ecb4bbe3e56 100644
--- a/gcc/ada/sem_ch7.adb
+++ b/gcc/ada/sem_ch7.adb
@@ -319,8 +319,9 @@  package body Sem_Ch7 is
             function Set_Referencer_Of_Non_Subprograms return Boolean is
             begin
                --  An inlined subprogram body acts as a referencer
-               --  unless we generate C code since inlining is then
-               --  handled by the C compiler.
+               --  unless we generate C code without -gnatn where we want
+               --  to favor generating static inline functions as much as
+               --  possible.
 
                --  Note that we test Has_Pragma_Inline here in addition
                --  to Is_Inlined. We are doing this for a client, since
@@ -329,7 +330,9 @@  package body Sem_Ch7 is
                --  should occur, so we need to catch all cases where the
                --  subprogram may be inlined by the client.
 
-               if (not CCG_Mode or else Has_Pragma_Inline_Always (Decl_Id))
+               if (not CCG_Mode
+                     or else Has_Pragma_Inline_Always (Decl_Id)
+                     or else Inline_Active)
                  and then (Is_Inlined (Decl_Id)
                             or else Has_Pragma_Inline (Decl_Id))
                then