re PR ada/17540 (Duplicate symbols while building Ada)
authorRobert Dewar <dewar@gnat.com>
Mon, 20 Sep 2004 12:07:47 +0000 (12:07 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 20 Sep 2004 12:07:47 +0000 (14:07 +0200)
2004-09-20  Robert Dewar  <dewar@gnat.com>

PR ada/17540

* freeze.adb (Check_Address_Clause): Reset Is_Imported and Is_Public
if an address clause is present, since that means that the Import
should be ignored.

From-SVN: r87755

gcc/ada/ChangeLog
gcc/ada/freeze.adb

index 5f99b36d408b016e9e72fef27a6861f9ec21cc54..8c1632d23f9dcd0fa424c125cda3eb3b495a5d91 100644 (file)
@@ -1,3 +1,11 @@
+2004-09-20  Robert Dewar  <dewar@gnat.com>
+
+       PR ada/17540
+
+       * freeze.adb (Check_Address_Clause): Reset Is_Imported and Is_Public
+       if an address clause is present, since that means that the Import
+       should be ignored.
+
 2004-09-20  Arnaud Charlet  <charlet@act-europe.fr>
 
        * 5tsystem.ads: Removed, no longer used.
index cee69c4776254ae60f93c1def3384308ab7ee081..e58a987d8992ee0c87081b4718d05b2744574f7a 100644 (file)
@@ -82,7 +82,9 @@ package body Freeze is
 
    procedure Check_Address_Clause (E : Entity_Id);
    --  Apply legality checks to address clauses for object declarations,
-   --  at the point the object is frozen.
+   --  at the point the object is frozen. Also deals with cancelling effect
+   --  of Import pragma which has no effect (other than to eliminate any
+   --  implicit initialization) if an address clause is present.
 
    procedure Check_Strict_Alignment (E : Entity_Id);
    --  E is a base type. If E is tagged or has a component that is aliased
@@ -497,6 +499,11 @@ package body Freeze is
          then
             Warn_Overlay (Expr, Typ, Name (Addr));
          end if;
+
+         --  Cancel effect of any Import pragma
+
+         Set_Is_Imported (E, False);
+         Set_Is_Public (E, False);
       end if;
    end Check_Address_Clause;