mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-23 04:10:26 +08:00
[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. From-SVN: r264966
This commit is contained in:
parent
96d268c284
commit
e7e72f9b7a
@ -1,3 +1,10 @@
|
||||
2018-10-09 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* repinfo.adb: Remove with/use clause for Stand.
|
||||
|
@ -8932,7 +8932,17 @@ package body Sem_Ch6 is
|
||||
or else
|
||||
(Chars (Entity (E1)) = Chars (Entity (E2))
|
||||
and then Ekind (Entity (E1)) = E_Loop_Parameter
|
||||
and then Ekind (Entity (E2)) = E_Loop_Parameter);
|
||||
and then Ekind (Entity (E2)) = E_Loop_Parameter)
|
||||
|
||||
-- A call to an instantiation of Unchecked_Conversion is
|
||||
-- rewritten with the name of the generated function
|
||||
-- created for the instance, and this must be special-cased.
|
||||
|
||||
or else
|
||||
(Ekind (Entity (E1)) = E_Function
|
||||
and then Is_Intrinsic_Subprogram (Entity (E1))
|
||||
and then Is_Generic_Instance (Entity (E1))
|
||||
and then Entity (E2) = Alias (Entity (E1)));
|
||||
|
||||
elsif Nkind (E1) = N_Expanded_Name
|
||||
and then Nkind (E2) = N_Expanded_Name
|
||||
|
Loading…
x
Reference in New Issue
Block a user