[Ada] Spurious error message on visibiliy change in aspect expression
commitcb3f6e9f97124328704e1c081e1ffb74c7b46745
authorpmderodat <pmderodat@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Oct 2018 15:05:24 +0000 (9 15:05 +0000)
committerpmderodat <pmderodat@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Oct 2018 15:05:24 +0000 (9 15:05 +0000)
tree7e026190176104b876c652366d5fa46ad5072d29
parent26354491ecbcdb0a23709ce690e1837158120d63
[Ada] Spurious error message on visibiliy change in aspect expression

This patch removes an improper error message on a visibility change in
an aspect expression between the freeze point and the end of the
declaration list, when the expression involves a call to a instance of
Unchecked_Conversion and the enclosing package declaration has a package
body with multiple subprogram bodies.

The following must compile quietly:

----
package body Par.Rep is
   procedure Nothing is begin null; end;
   procedure Rien is begin null; end;
end;
----
with Par.Loc;
package Par.Rep is
   type Rec is record
      X, Y : Integer;
   end record
      with Volatile;

   Thing2 : Unsigned_32 := 15;
   Thing3 : Rec
    with Volatile, Address => To_Address (Par.Loc.Flash_Base);
    procedure Nothing;
end;
----
pragma Restrictions (No_Elaboration_Code);
with interfaces;  use interfaces;
pragma unreferenced (interfaces);
with Tp;       use Tp;
pragma unreferenced (Tp);
package Par is
end Par;
----
with Ada.Unchecked_Conversion;
with System;
with Interfaces; use Interfaces;
package Tp is
subtype system_address is unsigned_32;
   function to_address is new
      ada.unchecked_conversion (system_address, system.address);
   function To_32 is new
      ada.unchecked_conversion (System.Address, System_Address);
end;
----
with TP; use TP;
package Par.Loc is
FLASH_BASE        : constant system_address := 16#0800_0000#;
end;

2018-10-09  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch6.adb (Fully_Conformant_Expressions): Handle properly
the conformance check on an aspect expression that includes a
call to an instance of Unchecked_Conversion, or more generally a
call to an intrinsic operation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264966 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ada/ChangeLog
gcc/ada/sem_ch6.adb