public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-1771] ada: Disable inlining in potentially unevaluated contexts
@ 2023-06-13  7:34 Marc Poulhi?s
  0 siblings, 0 replies; only message in thread
From: Marc Poulhi?s @ 2023-06-13  7:34 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:8c748260776d672949ce02c9aa93292e0d6bc206

commit r14-1771-g8c748260776d672949ce02c9aa93292e0d6bc206
Author: Piotr Trojanek <trojanek@adacore.com>
Date:   Wed May 3 09:23:29 2023 +0200

    ada: Disable inlining in potentially unevaluated contexts
    
    Instead of explicitly disabling inlining in quantified expressions,
    (which happen to be only preanalysed) and then disabling inlining in
    potentially unevaluated contexts that are fully analysed (which happen
    to include quantified expressions), we now simply disable inlining in
    all potentially unevaluated contexts, regardless of the full analysis
    mode.
    
    This also disables inlining in iterated component associations, which
    can be both preanalysed or fully analysed depending on their expression,
    but nevertheless are potentially unevaluated.
    
    gcc/ada/
    
            * sem_res.adb (Resolve_Call): Replace early call to
            In_Quantified_Expression with a call to Is_Potentially_Unevaluated that
            was only done when Full_Analysis is true.

Diff:
---
 gcc/ada/sem_res.adb | 21 ++++++---------------
 1 file changed, 6 insertions(+), 15 deletions(-)

diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index c2a4bcb58cd..41787f3d2bc 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -7290,14 +7290,14 @@ package body Sem_Res is
                Cannot_Inline
                  ("cannot inline & (in default expression)?", N, Nam_UA);
 
-            --  Calls cannot be inlined inside quantified expressions, which
-            --  are left in expression form for GNATprove. Since these
-            --  expressions are only preanalyzed, we need to detect the failure
-            --  to inline outside of the case for Full_Analysis below.
+            --  Calls cannot be inlined inside potentially unevaluated
+            --  expressions, as this would create complex actions inside
+            --  expressions, that are not handled by GNATprove.
 
-            elsif In_Quantified_Expression (N) then
+            elsif Is_Potentially_Unevaluated (N) then
                Cannot_Inline
-                 ("cannot inline & (in quantified expression)?", N, Nam_UA);
+                  ("cannot inline & (in potentially unevaluated context)?",
+                   N, Nam_UA);
 
             --  Inlining should not be performed during preanalysis
 
@@ -7365,15 +7365,6 @@ package body Sem_Res is
                elsif No (Body_To_Inline (Nam_Decl)) then
                   null;
 
-               --  Calls cannot be inlined inside potentially unevaluated
-               --  expressions, as this would create complex actions inside
-               --  expressions, that are not handled by GNATprove.
-
-               elsif Is_Potentially_Unevaluated (N) then
-                  Cannot_Inline
-                    ("cannot inline & (in potentially unevaluated context)?",
-                     N, Nam_UA);
-
                --  Calls cannot be inlined inside the conditions of while
                --  loops, as this would create complex actions inside
                --  the condition, that are not handled by GNATprove.

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-06-13  7:34 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-13  7:34 [gcc r14-1771] ada: Disable inlining in potentially unevaluated contexts Marc Poulhi?s

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).