From: Arnaud Charlet Date: Fri, 5 Aug 2011 14:24:40 +0000 (+0200) Subject: [multiple changes] X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5f9cdefe6b406caec538bb764c4da78751037bed;p=gcc.git [multiple changes] 2011-08-05 Yannick Moy * sem_ch12.adb (Analyze_Package_Instantiation, Need_Subprogram_Instance_Body): do not generate instance bodies in ALFA mode. 2011-08-05 Ed Schonberg * sem_type.adb (Specific_Type): in an instance, the type-specific operand of an equality check that involves null may have a private type. Use full view to determine legality of construct. From-SVN: r177444 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 14db29dc583..e9b409c544f 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,15 @@ +2011-08-05 Yannick Moy + + * sem_ch12.adb (Analyze_Package_Instantiation, + Need_Subprogram_Instance_Body): do not generate instance bodies in ALFA + mode. + +2011-08-05 Ed Schonberg + + * sem_type.adb (Specific_Type): in an instance, the type-specific + operand of an equality check that involves null may have a private + type. Use full view to determine legality of construct. + 2011-08-05 Vincent Celier * gnatcmd.adb (Get_Closure): Do not crash when it is not possible to diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index 278552d6d1a..c25e2e9b02a 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -3400,6 +3400,7 @@ package body Sem_Ch12 is or else Might_Inline_Subp) and then not Is_Actual_Pack and then not Inline_Now + and then not ALFA_Mode and then (Operating_Mode = Generate_Code or else (Operating_Mode = Check_Semantics and then ASIS_Mode)); @@ -4015,6 +4016,7 @@ package body Sem_Ch12 is if (Is_In_Main_Unit (N) or else Is_Inlined (Subp) or else Is_Inlined (Alias (Subp))) + and then not ALFA_Mode and then (Operating_Mode = Generate_Code or else (Operating_Mode = Check_Semantics and then ASIS_Mode)) diff --git a/gcc/ada/sem_type.adb b/gcc/ada/sem_type.adb index 3d99e185f17..d11767b4859 100644 --- a/gcc/ada/sem_type.adb +++ b/gcc/ada/sem_type.adb @@ -3198,6 +3198,17 @@ package body Sem_Type is then return T1; + -- In an instance, the specific type may have a private view. Use full + -- view to check legality. + + elsif T2 = Any_Access + and then Is_Private_Type (T1) + and then Present (Full_View (T1)) + and then Is_Access_Type (Full_View (T1)) + and then In_Instance + then + return T1; + elsif T2 = Any_Composite and then Is_Aggregate_Type (T1) then