[COMMITTED,19/26] ada: Plug loophole in handling of No_Raise pragma
Checks
Commit Message
From: Eric Botcazou <ebotcazou@adacore.com>
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.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/ada/sem_ch12.adb | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
@@ -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);