https://gcc.gnu.org/g:7ec7b5ae9f1d9ade520bc9e658eae5f1d6e75055
commit r15-1131-g7ec7b5ae9f1d9ade520bc9e658eae5f1d6e75055 Author: Piotr Trojanek <troja...@adacore.com> Date: Mon Apr 8 18:00:05 2024 +0200 ada: Refactor checks for Refined_Depends in generic instances Code cleanup; semantics is unaffected. gcc/ada/ * sem_prag.adb (Check_Dependency_Clause, Check_Output_States, Report_Extra_Clauses): Remove multiple checks for being inside an instance. (Analyze_Refined_Depends_In_Decl_Part): Add single check for being inside an instance. Diff: --- gcc/ada/sem_prag.adb | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 86a25dc7d0c..29f27652138 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -27650,13 +27650,6 @@ package body Sem_Prag is -- Start of processing for Check_Dependency_Clause begin - -- Do not perform this check in an instance because it was already - -- performed successfully in the generic template. - - if In_Instance then - return; - end if; - -- Examine all refinement clauses and compare them against the -- dependence clause. @@ -27910,16 +27903,10 @@ package body Sem_Prag is -- Start of processing for Check_Output_States begin - -- Do not perform this check in an instance because it was already - -- performed successfully in the generic template. - - if In_Instance then - null; - -- Inspect the outputs of pragma Depends looking for a state with a -- visible refinement. - elsif Present (Spec_Outputs) then + if Present (Spec_Outputs) then Item_Elmt := First_Elmt (Spec_Outputs); while Present (Item_Elmt) loop Item := Node (Item_Elmt); @@ -28261,13 +28248,7 @@ package body Sem_Prag is Clause : Node_Id; begin - -- Do not perform this check in an instance because it was already - -- performed successfully in the generic template. - - if In_Instance then - null; - - elsif Present (Clauses) then + if Present (Clauses) then Clause := First (Clauses); while Present (Clause) loop SPARK_Msg_N @@ -28369,6 +28350,13 @@ package body Sem_Prag is Analyze_Depends_In_Decl_Part (N); + -- Do not perform these checks in an instance because they were already + -- performed successfully in the generic template. + + if In_Instance then + goto Leave; + end if; + -- Do not match dependencies against refinements if Refined_Depends is -- illegal to avoid emitting misleading error.