ghost.adb (Prune_Node): A freeze node for an ignored ghost entity must be pruned...
authorEd Schonberg <schonberg@adacore.com>
Mon, 4 Jul 2016 10:29:02 +0000 (10:29 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 4 Jul 2016 10:29:02 +0000 (12:29 +0200)
2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* ghost.adb (Prune_Node): A freeze node for an ignored ghost
entity must be pruned as well.

From-SVN: r237967

gcc/ada/ChangeLog
gcc/ada/ghost.adb

index 708b629..8672bdc 100644 (file)
@@ -1,3 +1,8 @@
+2016-07-04  Ed Schonberg  <schonberg@adacore.com>
+
+       * ghost.adb (Prune_Node): A freeze node for an ignored ghost
+       entity must be pruned as well.
+
 2016-07-04  Gary Dismukes  <dismukes@adacore.com>
 
        * sem_type.adb, einfo.ads, freeze.adb, exp_ch6.adb: Minor reformatting
index 2eca5ed..8add17a 100644 (file)
@@ -1174,6 +1174,15 @@ package body Ghost is
                Prune (N);
                return Skip;
 
+            --  A freeze node for an ignored ghost entity must be pruned as
+            --  well, to prevent meaningless references in the back end.
+
+            elsif Nkind (N) = N_Freeze_Entity
+              and then Is_Ignored_Ghost_Entity (Entity (N))
+            then
+               Prune (N);
+               return Skip;
+
             --  Scoping constructs such as blocks, packages, subprograms and
             --  bodies offer some flexibility with respect to pruning.