diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2024-04-08 16:26:02 +0200 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2024-06-10 11:03:58 +0200 |
commit | 8d711859139753221d3eef7ba650579a9817677b (patch) | |
tree | 8b3d275aea23fdafee5efca46891296e99bf19c3 | |
parent | 731824d08107075d689aec92ea564e0a3ec6d90a (diff) | |
download | gcc-8d711859139753221d3eef7ba650579a9817677b.zip gcc-8d711859139753221d3eef7ba650579a9817677b.tar.gz gcc-8d711859139753221d3eef7ba650579a9817677b.tar.bz2 |
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.
-rw-r--r-- | gcc/ada/sem_ch13.adb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index 4cf6fc9..c0a5b6c 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); |