[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Mon, 1 Aug 2011 14:36:39 +0000 (16:36 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 1 Aug 2011 14:36:39 +0000 (16:36 +0200)
2011-08-01  Javier Miranda  <miranda@adacore.com>

* sem_util.adb (Abstract_Interface_List): Complete condition when
processing private type declarations to avoid reading unavailable
attribute.
(Is_Synchronized_Tagged_Type): Complete condition when processing
private extension declaration nodes to avoid reading unavailable
attribute.

2011-08-01  Thomas Quinot  <quinot@adacore.com>

* sem_ch3.adb: Minor reformatting.

2011-08-01  Thomas Quinot  <quinot@adacore.com>

* s-parame-ae653.ads, s-parame-vms-alpha.ads, s-parame-hpux.ads,
i-cpoint.adb, i-cstrin.adb, i-cpoint.ads, i-cstrin.ads,
s-parame-vms-ia64.ads, s-parame.ads, i-c.ads, s-parame-vxworks.ads,
s-parame-vms-restrict.ads: Remove duplicated Interfaces.C.* packages
for VMS, instead parametrize the common implementation with
System.Parameters declarations.

From-SVN: r177038

15 files changed:
gcc/ada/ChangeLog
gcc/ada/i-c.ads
gcc/ada/i-cpoint.adb
gcc/ada/i-cpoint.ads
gcc/ada/i-cstrin.adb
gcc/ada/i-cstrin.ads
gcc/ada/s-parame-ae653.ads
gcc/ada/s-parame-hpux.ads
gcc/ada/s-parame-vms-alpha.ads
gcc/ada/s-parame-vms-ia64.ads
gcc/ada/s-parame-vms-restrict.ads
gcc/ada/s-parame-vxworks.ads
gcc/ada/s-parame.ads
gcc/ada/sem_ch3.adb
gcc/ada/sem_util.adb

index 88e6a37f9110df8c1c1e06c6def9e49ed57a8bd9..49d6da6d39825b99fe759aba48c55c7e471646af 100644 (file)
@@ -1,3 +1,25 @@
+2011-08-01  Javier Miranda  <miranda@adacore.com>
+
+       * sem_util.adb (Abstract_Interface_List): Complete condition when
+       processing private type declarations to avoid reading unavailable
+       attribute.
+       (Is_Synchronized_Tagged_Type): Complete condition when processing
+       private extension declaration nodes to avoid reading unavailable
+       attribute.
+
+2011-08-01  Thomas Quinot  <quinot@adacore.com>
+
+       * sem_ch3.adb: Minor reformatting.
+
+2011-08-01  Thomas Quinot  <quinot@adacore.com>
+
+       * s-parame-ae653.ads, s-parame-vms-alpha.ads, s-parame-hpux.ads,
+       i-cpoint.adb, i-cstrin.adb, i-cpoint.ads, i-cstrin.ads,
+       s-parame-vms-ia64.ads, s-parame.ads, i-c.ads, s-parame-vxworks.ads,
+       s-parame-vms-restrict.ads: Remove duplicated Interfaces.C.* packages
+       for VMS, instead parametrize the common implementation with
+       System.Parameters declarations.
+
 2011-08-01  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gnat_rm.texi: Document limitation of Pragma No_Strict_Aliasing.
index 9e98b050a7df29c3adf064342b36d1653bd41eea..1088836e25ed022458f75490bb05bca0b9b9b828 100644 (file)
@@ -54,10 +54,10 @@ package Interfaces.C is
    --  a non-private system.address type.
 
    type ptrdiff_t is
-     range -(2 ** (Standard'Address_Size - Integer'(1))) ..
-           +(2 ** (Standard'Address_Size - Integer'(1)) - 1);
+     range -(2 ** (System.Parameters.ptr_bits - Integer'(1))) ..
+           +(2 ** (System.Parameters.ptr_bits - Integer'(1)) - 1);
 
-   type size_t is mod 2 ** Standard'Address_Size;
+   type size_t is mod 2 ** System.Parameters.ptr_bits;
 
    --  Floating-Point
 
index 0e6b320476a4b825b922a977dfbd419dbbd8b8ae..6506448c2aa8c6fe38e1f5e807fce980a4211637 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -36,7 +36,7 @@ with Ada.Unchecked_Conversion;
 
 package body Interfaces.C.Pointers is
 
-   type Addr is mod Memory_Size;
+   type Addr is mod 2 ** System.Parameters.ptr_bits;
 
    function To_Pointer is new Ada.Unchecked_Conversion (Addr,      Pointer);
    function To_Addr    is new Ada.Unchecked_Conversion (Pointer,   Addr);
@@ -195,6 +195,7 @@ package body Interfaces.C.Pointers is
             subtype A is Element_Array (L .. H);
 
             type PA is access A;
+            for PA'Size use System.Parameters.ptr_bits;
             function To_PA is new Ada.Unchecked_Conversion (Pointer, PA);
 
          begin
@@ -238,6 +239,7 @@ package body Interfaces.C.Pointers is
             subtype A is Element_Array (L .. H);
 
             type PA is access A;
+            for PA'Size use System.Parameters.ptr_bits;
             function To_PA is new Ada.Unchecked_Conversion (Pointer, PA);
 
          begin
index 053511968a5bd91613dc0c08a32d582fce87afbe..e6a8ae4eff341970e2d04ce9ac635086f6ff0155 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1993-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1993-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -33,6 +33,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+with System.Parameters;
+
 generic
    type Index is (<>);
    type Element is private;
@@ -43,6 +45,7 @@ package Interfaces.C.Pointers is
    pragma Preelaborate;
 
    type Pointer is access all Element;
+   for Pointer'Size use System.Parameters.ptr_bits;
 
    pragma No_Strict_Aliasing (Pointer);
    --  We turn off any strict aliasing assumptions for the pointer type,
index e35ef36c9e03e2fbed29ce39256ab2ea17a3e1ba..814894646409b0545d8d9d2724ee266b01fb9226 100644 (file)
@@ -42,10 +42,10 @@ package body Interfaces.C.Strings is
    --  this type will in fact be used for aliasing values of other types.
 
    function To_chars_ptr is
-      new Ada.Unchecked_Conversion (Address, chars_ptr);
+      new Ada.Unchecked_Conversion (System.Parameters.C_Address, chars_ptr);
 
    function To_Address is
-      new Ada.Unchecked_Conversion (chars_ptr, Address);
+      new Ada.Unchecked_Conversion (chars_ptr, System.Parameters.C_Address);
 
    -----------------------
    -- Local Subprograms --
@@ -70,7 +70,7 @@ package body Interfaces.C.Strings is
    --  compatible, so we directly import here the malloc and free routines.
 
    function Memory_Alloc (Size : size_t) return chars_ptr;
-   pragma Import (C, Memory_Alloc, "__gnat_malloc");
+   pragma Import (C, Memory_Alloc, System.Parameters.C_Malloc_Linkname);
 
    procedure Memory_Free (Address : chars_ptr);
    pragma Import (C, Memory_Free, "__gnat_free");
index 7bfee8f2c6d251b7dd56af1531a367ebb2ddace8..bc6df774addc26b97451bc2cf4d2e74cb5d0f393 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1993-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1993-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -37,6 +37,7 @@ package Interfaces.C.Strings is
    pragma Preelaborate;
 
    type char_array_access is access all char_array;
+   for char_array_access'Size use System.Parameters.ptr_bits;
 
    pragma No_Strict_Aliasing (char_array_access);
    --  Since this type is used for external interfacing, with the pointer
@@ -91,7 +92,7 @@ package Interfaces.C.Strings is
 
 private
    type chars_ptr is access all Character;
-   pragma Convention (C, chars_ptr);
+   for chars_ptr'Size use System.Parameters.ptr_bits;
 
    pragma No_Strict_Aliasing (chars_ptr);
    --  Since this type is used for external interfacing, with the pointer
index ceb2405f3971d3ab11f221c7e273dd9340310be6..ae8a21074f2814a2f350cf01a216a82b0e2157fc 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -112,6 +112,15 @@ package System.Parameters is
    --  is that this is the same as type Long_Integer, but this is not true
    --  of all targets. For example, in OpenVMS long /= Long_Integer.
 
+   ptr_bits  : constant := Standard'Address_Size;
+   subtype C_Address is System.Address;
+   --  Number of bits in Interaces.C pointers, normally a standard address,
+   --  except on 64-bit VMS where they are 32-bit addresses, for compatibility
+   --  with legacy code.
+
+   C_Malloc_Linkname : constant String := "__gnat_malloc";
+   --  Name of runtime function used to allocate such a pointer
+
    ----------------------------------------------
    -- Behavior of Pragma Finalize_Storage_Only --
    ----------------------------------------------
index 38f8cb510e03ac72eeca9d822ac3121d676efda0..7bb22b0532dd36708c277db1749ae33357eab5e3 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -110,6 +110,15 @@ package System.Parameters is
    --  is that this is the same as type Long_Integer, but this is not true
    --  of all targets. For example, in OpenVMS long /= Long_Integer.
 
+   ptr_bits  : constant := Standard'Address_Size;
+   subtype C_Address is System.Address;
+   --  Number of bits in Interaces.C pointers, normally a standard address,
+   --  except on 64-bit VMS where they are 32-bit addresses, for compatibility
+   --  with legacy code.
+
+   C_Malloc_Linkname : constant String := "__gnat_malloc";
+   --  Name of runtime function used to allocate such a pointer
+
    ----------------------------------------------
    -- Behavior of Pragma Finalize_Storage_Only --
    ----------------------------------------------
index 5e1d24e4ffa20e953156b61f40262967792ce9db..308656c1415ca369876d1ed7b70b7a789470f814 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -46,6 +46,8 @@
 --  Note: do not introduce any pragma Inline statements into this unit, since
 --  otherwise the relinking and rebinding capability would be deactivated.
 
+with System.Aux_DEC;
+
 package System.Parameters is
    pragma Pure;
 
@@ -110,6 +112,15 @@ package System.Parameters is
    --  is that this is the same as type Long_Integer, but this is not true
    --  of all targets. For example, in OpenVMS long /= Long_Integer.
 
+   ptr_bits  : constant := 32;
+   subtype C_Address is System.Short_Address;
+   --  Number of bits in Interaces.C pointers, normally a standard address,
+   --  except on 64-bit VMS where they are 32-bit addresses, for compatibility
+   --  with legacy code.
+
+   C_Malloc_Linkname : constant String := "__gnat_malloc32";
+   --  Name of runtime function used to allocate such a pointer
+
    ----------------------------------------------
    -- Behavior of Pragma Finalize_Storage_Only --
    ----------------------------------------------
index 029dfee75007c9e412077952972b1565540f3bdb..29ec8088843f77ab2e8c22c9187e0d4c2fe015dd 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -46,6 +46,8 @@
 --  Note: do not introduce any pragma Inline statements into this unit, since
 --  otherwise the relinking and rebinding capability would be deactivated.
 
+with System.Aux_DEC;
+
 package System.Parameters is
    pragma Pure;
 
@@ -110,6 +112,15 @@ package System.Parameters is
    --  is that this is the same as type Long_Integer, but this is not true
    --  of all targets. For example, in OpenVMS long /= Long_Integer.
 
+   ptr_bits  : constant := 32;
+   subtype C_Address is System.Short_Address;
+   --  Number of bits in Interaces.C pointers, normally a standard address,
+   --  except on 64-bit VMS where they are 32-bit addresses, for compatibility
+   --  with legacy code.
+
+   C_Malloc_Linkname : constant String := "__gnat_malloc32";
+   --  Name of runtime function used to allocate such a pointer
+
    ----------------------------------------------
    -- Behavior of Pragma Finalize_Storage_Only --
    ----------------------------------------------
index 3456f249f19f895aec17b7792bd307e6fdeb73e8..7c3cbd677945a819ce742c66313b05170aa449c6 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -46,6 +46,8 @@
 --  Note: do not introduce any pragma Inline statements into this unit, since
 --  otherwise the relinking and rebinding capability would be deactivated.
 
+with System.Aux_DEC;
+
 package System.Parameters is
    pragma Pure;
 
@@ -110,6 +112,15 @@ package System.Parameters is
    --  is that this is the same as type Long_Integer, but this is not true
    --  of all targets. For example, in OpenVMS long /= Long_Integer.
 
+   ptr_bits  : constant := 32;
+   subtype C_Address is System.Short_Address;
+   --  Number of bits in Interaces.C pointers, normally a standard address,
+   --  except on 64-bit VMS where they are 32-bit addresses, for compatibility
+   --  with legacy code.
+
+   C_Malloc_Linkname : constant String := "__gnat_malloc32";
+   --  Name of runtime function used to allocate such a pointer
+
    ----------------------------------------------
    -- Behavior of Pragma Finalize_Storage_Only --
    ----------------------------------------------
index 411d67d846fae983016f0f37736976aabd8ff156..715eb04e7d4ca62923d292de277219b24750a32f 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -112,6 +112,15 @@ package System.Parameters is
    --  is that this is the same as type Long_Integer, but this is not true
    --  of all targets. For example, in OpenVMS long /= Long_Integer.
 
+   ptr_bits  : constant := Standard'Address_Size;
+   subtype C_Address is System.Address;
+   --  Number of bits in Interaces.C pointers, normally a standard address,
+   --  except on 64-bit VMS where they are 32-bit addresses, for compatibility
+   --  with legacy code.
+
+   C_Malloc_Linkname : constant String := "__gnat_malloc";
+   --  Name of runtime function used to allocate such a pointer
+
    ----------------------------------------------
    -- Behavior of Pragma Finalize_Storage_Only --
    ----------------------------------------------
index 2110034ec6b48f799ac2eb99d34db454965d0a96..526139f1ed47d227291a319eeed6c83b0766c2bd 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -112,6 +112,15 @@ package System.Parameters is
    --  is that this is the same as type Long_Integer, but this is not true
    --  of all targets. For example, in OpenVMS long /= Long_Integer.
 
+   ptr_bits  : constant := Standard'Address_Size;
+   subtype C_Address is System.Address;
+   --  Number of bits in Interaces.C pointers, normally a standard address,
+   --  except on 64-bit VMS where they are 32-bit addresses, for compatibility
+   --  with legacy code.
+
+   C_Malloc_Linkname : constant String := "__gnat_malloc";
+   --  Name of runtime function used to allocate such a pointer
+
    ----------------------------------------------
    -- Behavior of Pragma Finalize_Storage_Only --
    ----------------------------------------------
index c44b4e7316dd6fabd580ce3087864312f6392998..c101d93c6022b5480782251efbc1ccf58daa8fe1 100644 (file)
@@ -1175,7 +1175,7 @@ package body Sem_Ch3 is
 
             --  In ASIS mode, the access_to_subprogram may be analyzed twice,
             --  when it is part of an unconstrained type and subtype expansion
-            --  is disabled.  To avoid back-end problems with shared profiles,
+            --  is disabled. To avoid back-end problems with shared profiles,
             --  use previous subprogram type as the designated type.
 
             if ASIS_Mode
index b7cf370c65e24611effeee4c284ef47234ada4ec..f42c8ece866e90bc9dfce80a50efa3c3f18a8379 100644 (file)
@@ -165,7 +165,10 @@ package body Sem_Util is
             Nod := Type_Definition (Parent (Typ));
 
          elsif Nkind (Parent (Typ)) = N_Private_Type_Declaration then
-            if Present (Full_View (Typ)) then
+            if Present (Full_View (Typ))
+              and then Nkind (Parent (Full_View (Typ)))
+                         = N_Full_Type_Declaration
+            then
                Nod := Type_Definition (Parent (Full_View (Typ)));
 
             --  If the full-view is not available we cannot do anything else
@@ -7335,6 +7338,7 @@ package body Sem_Util is
                 and then Is_Synchronized_Interface (E))
             or else
              (Ekind (E) = E_Record_Type_With_Private
+                and then Nkind (Parent (E)) = N_Private_Extension_Declaration
                 and then (Synchronized_Present (Parent (E))
                            or else Is_Synchronized_Interface (Etype (E))));
    end Is_Synchronized_Tagged_Type;