diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/sem_elab.adb | 2 | ||||
-rw-r--r-- | gcc/ada/sem_prag.adb | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb index 89b6e13..5bc116a 100644 --- a/gcc/ada/sem_elab.adb +++ b/gcc/ada/sem_elab.adb @@ -15121,7 +15121,7 @@ package body Sem_Elab is Inst_Rep : Scenario_Rep_Id; In_State : Processing_In_State); pragma Inline (Process_SPARK_Instantiation); - -- Verify that instanciation Inst does not precede the generic body it + -- Verify that instantiation Inst does not precede the generic body it -- instantiates (SPARK RM 7.7(6)). Inst_Rep is the representation of the -- instantiation. In_State is the current state of the Processing phase. diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 1b1e01b..a1d645e 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -243,6 +243,7 @@ package body Sem_Prag is -- Constant_After_Elaboration -- Effective_Reads -- Effective_Writers + -- No_Caching -- Part_Of -- Find the first source declaration or statement found while traversing -- the previous node chain starting from pragma Prag. If flag Do_Checks is @@ -30474,6 +30475,16 @@ package body Sem_Prag is Stmt : Node_Id; begin + -- If the pragma comes from an aspect on a compilation unit that is a + -- package instance, then return the original package instantiation + -- node. + + if Nkind (Parent (Prag)) = N_Compilation_Unit_Aux then + return + Get_Unit_Instantiation_Node + (Defining_Entity (Unit (Enclosing_Comp_Unit_Node (Prag)))); + end if; + Stmt := Prev (Prag); while Present (Stmt) loop |