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

commit r15-1133-g8d711859139753221d3eef7ba650579a9817677b
Author: Piotr Trojanek <troja...@adacore.com>
Date:   Mon Apr 8 16:26:02 2024 +0200

    ada: Fix handling of aspects CPU and Interrupt_Priority
    
    When resolving aspect expression, aspects CPU and Interrupt_Priority
    should be handled like the aspect Priority; in particular, all these
    expressions can reference discriminants of the annotated task type.
    
    gcc/ada/
    
            * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Make
            discriminants visible when analyzing aspect Interrupt_Priority.
            (Freeze_Entity_Checks): Likewise.
            (Resolve_Aspect_Expressions): Likewise for both aspects CPU and
            Interrupt_Priority.

Diff:
---
 gcc/ada/sem_ch13.adb | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index 4cf6fc9a645..c0a5b6c2c37 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -11107,6 +11107,7 @@ package body Sem_Ch13 is
          elsif A_Id in Aspect_CPU
                      | Aspect_Dynamic_Predicate
                      | Aspect_Ghost_Predicate
+                     | Aspect_Interrupt_Priority
                      | Aspect_Predicate
                      | Aspect_Priority
                      | Aspect_Static_Predicate
@@ -13366,6 +13367,7 @@ package body Sem_Ch13 is
                   if Get_Aspect_Id (Ritem) in Aspect_CPU
                                             | Aspect_Dynamic_Predicate
                                             | Aspect_Ghost_Predicate
+                                            | Aspect_Interrupt_Priority
                                             | Aspect_Predicate
                                             | Aspect_Static_Predicate
                                             | Aspect_Priority
@@ -15881,7 +15883,10 @@ package body Sem_Ch13 is
                      Set_Must_Not_Freeze (Expr);
                      Preanalyze_Spec_Expression (Expr, E);
 
-                  when Aspect_Priority =>
+                  when Aspect_CPU
+                     | Aspect_Interrupt_Priority
+                     | Aspect_Priority
+                  =>
                      Push_Type (E);
                      Preanalyze_Spec_Expression (Expr, Any_Integer);
                      Pop_Type (E);

Reply via email to