[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Fri, 5 Aug 2011 14:24:40 +0000 (16:24 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 5 Aug 2011 14:24:40 +0000 (16:24 +0200)
2011-08-05  Yannick Moy  <moy@adacore.com>

* sem_ch12.adb (Analyze_Package_Instantiation,
Need_Subprogram_Instance_Body): do not generate instance bodies in ALFA
mode.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

* 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

gcc/ada/ChangeLog
gcc/ada/sem_ch12.adb
gcc/ada/sem_type.adb

index 14db29d..e9b409c 100644 (file)
@@ -1,3 +1,15 @@
+2011-08-05  Yannick Moy  <moy@adacore.com>
+
+       * sem_ch12.adb (Analyze_Package_Instantiation,
+       Need_Subprogram_Instance_Body): do not generate instance bodies in ALFA
+       mode.
+
+2011-08-05  Ed Schonberg  <schonberg@adacore.com>
+
+       * 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  <celier@adacore.com>
 
        * gnatcmd.adb (Get_Closure): Do not crash when it is not possible to
index 278552d..c25e2e9 100644 (file)
@@ -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))
index 3d99e18..d11767b 100644 (file)
@@ -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