From: Viljar Indus <in...@adacore.com>

Create a ghost region for pragma annotate so that we are able to analyze
the entity references correctly inside the pragma.

gcc/ada/ChangeLog:

        * sem_prag.adb: Create a ghost region for pragma annotate before
        analyzing its arguments.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/sem_prag.adb | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 753ccda66756..661d4401d7a2 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -14149,6 +14149,9 @@ package body Sem_Prag is
             Expr    : Node_Id;
             Nam_Arg : Node_Id;
 
+            Saved_Ghost_Config : constant Ghost_Config_Type := Ghost_Config;
+            --  Save the Ghost-related attributes to restore on exit
+
             --------------------------
             -- Inferred_String_Type --
             --------------------------
@@ -14226,6 +14229,10 @@ package body Sem_Prag is
                end if;
             end if;
 
+            --  Set the ghost mode before analyzing all of the arguments
+
+            Set_Ghost_Mode (N);
+
             --  Continue the processing with last argument removed for now
 
             Check_Arg_Is_Identifier (Arg1);
@@ -14271,6 +14278,8 @@ package body Sem_Prag is
                   Next (Arg);
                end loop;
             end if;
+
+            Restore_Ghost_Region (Saved_Ghost_Config);
          end Annotate;
 
          -------------------------------------------------
-- 
2.43.0

Reply via email to