aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2023-05-08 16:17:33 +0200
committerMarc Poulhiès <poulhies@adacore.com>2023-06-15 09:59:33 +0200
commit3b3e181be8e628e2ebddb3133f7247366e06aa09 (patch)
tree627dc735fcaaa9272b06e4610b8b434d7dc0db63 /gcc
parentbe54247f74f54ec883e7677a78d6ec1bd97b1e76 (diff)
downloadgcc-3b3e181be8e628e2ebddb3133f7247366e06aa09.zip
gcc-3b3e181be8e628e2ebddb3133f7247366e06aa09.tar.gz
gcc-3b3e181be8e628e2ebddb3133f7247366e06aa09.tar.bz2
ada: Fix aspect Linker_Section ignored on subprogram body
The compiler is waiting for the freeze node of the body, but it is never generated since the freezing of the body is not delayed. The change also removes an obsolete piece of code. gcc/ada/ * sem_ch13.adb (Analyze_Aspect_Specifications): Add missing items in the list of aspects handled by means of Insert_Pragma. <Aspect_Linker_Section>: Remove obsolete code. Do not delay the processing of the aspect if the entity is already frozen.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/sem_ch13.adb34
1 files changed, 22 insertions, 12 deletions
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index e771c0d..6562732 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -1409,20 +1409,37 @@ package body Sem_Ch13 is
-- Abstract_State
-- Always_Terminates
-- Attach_Handler
+ -- Async_Readers
+ -- Async_Writers
+ -- Constant_After_Elaboration
-- Contract_Cases
+ -- Convention
+ -- Default_Initial_Condition
+ -- Default_Storage_Pool
-- Depends
+ -- Effective_Reads
+ -- Effective_Writes
-- Exceptional_Cases
+ -- Extensions_Visible
-- Ghost
-- Global
-- Initial_Condition
-- Initializes
+ -- Max_Entry_Queue_Depth
+ -- Max_Entry_Queue_Length
+ -- Max_Queue_Length
+ -- No_Caching
+ -- Part_Of
-- Post
-- Pre
-- Refined_Depends
-- Refined_Global
+ -- Refined_Post
-- Refined_State
-- SPARK_Mode
+ -- Secondary_Stack_Size
-- Subprogram_Variant
+ -- Volatile_Function
-- Warnings
-- Insert pragma Prag such that it mimics the placement of a source
-- pragma of the same kind. Flag Is_Generic should be set when the
@@ -3064,16 +3081,11 @@ package body Sem_Ch13 is
Expression => Relocate_Node (Expr))),
Pragma_Name => Name_Linker_Section);
- -- Linker_Section does not need delaying, as its argument
- -- must be a static string. Furthermore, if applied to
- -- an object with an explicit initialization, the object
- -- must be frozen in order to elaborate the initialization
- -- code. (This is already done for types with implicit
- -- initialization, such as protected types.)
+ -- No need to delay the processing if the entity is already
+ -- frozen. This should only happen for subprogram bodies.
- if Nkind (N) = N_Object_Declaration
- and then Has_Init_Expression (N)
- then
+ if Is_Frozen (E) then
+ pragma Assert (Nkind (N) = N_Subprogram_Body);
Delay_Required := False;
end if;
@@ -4763,9 +4775,7 @@ package body Sem_Ch13 is
-- For an aspect that applies to a type, indicate whether it
-- appears on a partial view of the type.
- if Is_Type (E)
- and then Is_Private_Type (E)
- then
+ if Is_Type (E) and then Is_Private_Type (E) then
Set_Aspect_On_Partial_View (Aspect);
end if;