https://gcc.gnu.org/g:5f3902ed1d9c7686fa7bad1e24f0c2b40fd35efe

commit r15-2680-g5f3902ed1d9c7686fa7bad1e24f0c2b40fd35efe
Author: Eric Botcazou <ebotca...@adacore.com>
Date:   Mon Jul 15 22:29:06 2024 +0200

    ada: Plug loophole in handling of No_Raise pragma
    
    Unlike the aspect, the pragma needs to be propagated explicitly from a
    generic subprogram to its instances.
    
    gcc/ada/
    
            * sem_ch12.adb (Analyze_Subprogram_Instantiation): Propagate the
            No_Raise flag like the No_Return flag.

Diff:
---
 gcc/ada/sem_ch12.adb | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
index 6b98343aeebe..25821cb76954 100644
--- a/gcc/ada/sem_ch12.adb
+++ b/gcc/ada/sem_ch12.adb
@@ -6069,9 +6069,16 @@ package body Sem_Ch12 is
          Set_Has_Pragma_No_Inline
            (Anon_Id,     Has_Pragma_No_Inline (Gen_Unit));
 
-         --  Propagate No_Return if pragma applied to generic unit. This must
-         --  be done explicitly because pragma does not appear in generic
-         --  declaration (unlike the aspect case).
+         --  Propagate No_Raise if pragma applied to generic unit. This must
+         --  be done explicitly because the pragma does not appear in generic
+         --  declarations (unlike the aspect).
+
+         if No_Raise (Gen_Unit) then
+            Set_No_Raise (Act_Decl_Id);
+            Set_No_Raise (Anon_Id);
+         end if;
+
+         --  Likewise for No_Return
 
          if No_Return (Gen_Unit) then
             Set_No_Return (Act_Decl_Id);

Reply via email to