From: Eric Botcazou <ebotca...@adacore.com>

Namely E_Constant and E_Variable entities.

gcc/ada/ChangeLog:

        * einfo.ads (Overlays_Constant): Define in constants and variables.
        * gen_il-gen-gen_entities.adb (Entity_Kind): Move Overlays_Constant
        semantic flag to...
        (Constant_Or_Variable_Kind): ...here.
        * sem_util.adb (Note_Possible_Modification): Add guard.

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

---
 gcc/ada/einfo.ads                   | 10 +++++-----
 gcc/ada/gen_il-gen-gen_entities.adb |  2 +-
 gcc/ada/sem_util.adb                |  1 +
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads
index 545c15de24a..1cbac6d9a7d 100644
--- a/gcc/ada/einfo.ads
+++ b/gcc/ada/einfo.ads
@@ -3927,9 +3927,8 @@ package Einfo is
 --         Points to the component in the base type.
 
 --    Overlays_Constant
---       Defined in all entities. Set only for E_Constant or E_Variable for
---       which there is an address clause that causes the entity to overlay
---       a constant object.
+--       Defined in constants and variables. Set if there is an address clause
+--       that causes the entity to overlay a constant object.
 
 --    Overridden_Operation
 --       Defined in subprograms. For overriding operations, points to the
@@ -4961,7 +4960,6 @@ package Einfo is
    --    Materialize_Entity
    --    Needs_Debug_Info
    --    Never_Set_In_Source
-   --    Overlays_Constant
    --    Referenced
    --    Referenced_As_LHS
    --    Referenced_As_Out_Parameter
@@ -5288,7 +5286,7 @@ package Einfo is
    --    Interface_Name                        (constants only)
    --    Related_Type                          (constants only)
    --    Initialization_Statements
-   --    BIP_Initialization_Call
+   --    BIP_Initialization_Call               (constants only)
    --    Finalization_Master_Node
    --    Last_Aggregate_Assignment
    --    Activation_Record_Component
@@ -5318,6 +5316,7 @@ package Einfo is
    --    Is_Volatile_Full_Access
    --    Optimize_Alignment_Space              (constants only)
    --    Optimize_Alignment_Time               (constants only)
+   --    Overlays_Constant                     (constants only)
    --    SPARK_Pragma_Inherited                (constants only)
    --    Stores_Attribute_Old_Prefix           (constants only)
    --    Treat_As_Volatile
@@ -6205,6 +6204,7 @@ package Einfo is
    --    OK_To_Rename
    --    Optimize_Alignment_Space
    --    Optimize_Alignment_Time
+   --    Overlays_Constant
    --    SPARK_Pragma_Inherited
    --    Suppress_Initialization
    --    Treat_As_Volatile
diff --git a/gcc/ada/gen_il-gen-gen_entities.adb 
b/gcc/ada/gen_il-gen-gen_entities.adb
index bfa634f8a69..8af261ac036 100644
--- a/gcc/ada/gen_il-gen-gen_entities.adb
+++ b/gcc/ada/gen_il-gen-gen_entities.adb
@@ -215,7 +215,6 @@ begin -- Gen_IL.Gen.Gen_Entities
         Sm (May_Inherit_Delayed_Rep_Aspects, Flag),
         Sm (Needs_Debug_Info, Flag),
         Sm (Never_Set_In_Source, Flag),
-        Sm (Overlays_Constant, Flag),
         Sm (Prev_Entity, Node_Id),
         Sm (Referenced, Flag),
         Sm (Referenced_As_LHS, Flag),
@@ -353,6 +352,7 @@ begin -- Gen_IL.Gen.Gen_Entities
         Sm (Last_Aggregate_Assignment, Node_Id),
         Sm (Optimize_Alignment_Space, Flag),
         Sm (Optimize_Alignment_Time, Flag),
+        Sm (Overlays_Constant, Flag),
         Sm (Prival_Link, Node_Id),
         Sm (Related_Type, Node_Id),
         Sm (Return_Statement, Node_Id),
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index c74c10f2b5f..2b7296b67e8 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -25586,6 +25586,7 @@ package body Sem_Util is
 
             if Sure
               and then Modification_Comes_From_Source
+              and then Ekind (Ent) in E_Constant | E_Variable
               and then Overlays_Constant (Ent)
               and then Address_Clause_Overlay_Warnings
             then
-- 
2.43.0

Reply via email to