exp_dist.adb (Build_TypeCode_Call): Remove incorrect processing for Itypes.
authorThomas Quinot <quinot@adacore.com>
Mon, 4 Jul 2005 13:27:43 +0000 (15:27 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 4 Jul 2005 13:27:43 +0000 (15:27 +0200)
2005-07-04  Thomas Quinot  <quinot@adacore.com>

* exp_dist.adb (Build_TypeCode_Call): Remove incorrect processing for
Itypes. Itypes are really unexpected there.
(Build_TypeCode_Function): Generalise special processing for Itypes to
handle the case of numeric implicit base types as well as enumerated
ones.

From-SVN: r101578

gcc/ada/exp_dist.adb

index f1dfd342c92b012e4660c2ae937c74e3e00463d9..b3801f61d8858b29ec2e2d8183d4914019cc71b7 100644 (file)
@@ -9638,11 +9638,6 @@ package body Exp_Dist is
                   U_Type := Base_Type (U_Type);
                end if;
 
-               if Is_Itype (U_Type) then
-                  return Build_TypeCode_Call
-                    (Loc, Associated_Node_For_Itype (U_Type), Decls);
-               end if;
-
                if U_Type = Standard_Boolean then
                   Lib_RE := RE_TC_B;
 
@@ -10105,18 +10100,12 @@ package body Exp_Dist is
               and then not Is_Tagged_Type (Typ)
             then
                declare
-                  D_Node : constant Node_Id := Declaration_Node (Typ);
                   Parent_Type : Entity_Id := Etype (Typ);
                begin
 
-                  if Is_Enumeration_Type (Typ)
-                    and then Nkind (D_Node) = N_Subtype_Declaration
-                    and then Nkind (Original_Node (D_Node))
-                    /= N_Subtype_Declaration
-                  then
+                  if Is_Itype (Parent_Type) then
 
-                     --  Parent_Type is the implicit intermediate base type
-                     --  created by Build_Derived_Enumeration_Type.
+                     --  Skip implicit base type
 
                      Parent_Type := Etype (Parent_Type);
                   end if;