OSDN Git Service

2005-11-14 Javier Miranda <miranda@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 15 Nov 2005 14:04:34 +0000 (14:04 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 15 Nov 2005 14:04:34 +0000 (14:04 +0000)
* s-finroo.ads, s-finroo.adb (Read): Addition of "not null" to the
anonymous access.
(Write): Addition of "not null" to the anonymous access.
(Read): Addition of "not null" to the anonymous access.
(Write): Addition of "not null" to the anonymous access.

* s-strxdr.adb, s-stratt.ads, s-stratt.adb (I_AD, I_AS, I_B, I_C, I_F,
I_I, I_LF, I_LI, I_LLF, I_LLI, I_LLU, I_LU, I_SF, I_SI, I_SSI, I_SSU,
I_SU, I_U, I_WC): Addition of "not null" to the anonymous access.
(W_AD, W_AS, W_B, W_C, W_F, W_I, W_LF, W_LI, W_LLF, W_LLI, W_LLU,
W_LU, W_SF, W_SI, W_SSI, W_SSU, W_SU, W_U, W_WC): Addition of
"not null" to the anonymous access.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107009 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/s-finroo.adb
gcc/ada/s-finroo.ads
gcc/ada/s-stratt.adb
gcc/ada/s-stratt.ads
gcc/ada/s-strxdr.adb

index 6fcc608..559c29c 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---           Copyright (C) 1992-2003 Free Software Foundation, Inc.         --
+--           Copyright (C) 1992-2005 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- --
@@ -73,8 +73,9 @@ package body System.Finalization_Root is
    --  Suppress warning for out paramater Item which is not assigned
    --  because it is pretty much empty.
 
-   procedure Read (Stream : access Ada.Streams.Root_Stream_Type'Class;
-                   Item : out Root_Controlled)
+   procedure Read
+     (Stream : not null access Ada.Streams.Root_Stream_Type'Class;
+      Item   : out Root_Controlled)
    is
    begin
       null;
@@ -87,8 +88,9 @@ package body System.Finalization_Root is
    --  Read and Write must be empty in order to avoid copying the
    --  finalization pointers.
 
-   procedure Write (Stream : access Ada.Streams.Root_Stream_Type'Class;
-                    Item : in Root_Controlled)
+   procedure Write
+     (Stream : not null access Ada.Streams.Root_Stream_Type'Class;
+      Item   : in Root_Controlled)
    is
    begin
       null;
index ed1be45..f9847eb 100644 (file)
@@ -61,10 +61,13 @@ package System.Finalization_Root is
    procedure Finalize   (Object : in out Root_Controlled);
    procedure Adjust     (Object : in out Root_Controlled);
 
-   procedure Write     (Stream : access Ada.Streams.Root_Stream_Type'Class;
-                        Item : in Root_Controlled);
-   procedure Read      (Stream : access Ada.Streams.Root_Stream_Type'Class;
-                        Item : out Root_Controlled);
+   procedure Write
+     (Stream : not null access Ada.Streams.Root_Stream_Type'Class;
+      Item   : in Root_Controlled);
+
+   procedure Read
+     (Stream : not null access Ada.Streams.Root_Stream_Type'Class;
+      Item   : out Root_Controlled);
 
    for Root_Controlled'Read use Read;
    for Root_Controlled'Write use Write;
index 5cf84c4..810a104 100644 (file)
@@ -119,7 +119,7 @@ package body System.Stream_Attributes is
    -- I_AD --
    ----------
 
-   function I_AD (Stream : access RST) return Fat_Pointer is
+   function I_AD (Stream : not null access RST) return Fat_Pointer is
       T : S_AD;
       L : SEO;
 
@@ -137,7 +137,7 @@ package body System.Stream_Attributes is
    -- I_AS --
    ----------
 
-   function I_AS (Stream : access RST) return Thin_Pointer is
+   function I_AS (Stream : not null access RST) return Thin_Pointer is
       T : S_AS;
       L : SEO;
 
@@ -155,7 +155,7 @@ package body System.Stream_Attributes is
    -- I_B --
    ---------
 
-   function I_B (Stream : access RST) return Boolean is
+   function I_B (Stream : not null access RST) return Boolean is
       T : S_B;
       L : SEO;
 
@@ -173,7 +173,7 @@ package body System.Stream_Attributes is
    -- I_C --
    ---------
 
-   function I_C (Stream : access RST) return Character is
+   function I_C (Stream : not null access RST) return Character is
       T : S_C;
       L : SEO;
 
@@ -191,7 +191,7 @@ package body System.Stream_Attributes is
    -- I_F --
    ---------
 
-   function I_F (Stream : access RST) return Float is
+   function I_F (Stream : not null access RST) return Float is
       T : S_F;
       L : SEO;
 
@@ -209,7 +209,7 @@ package body System.Stream_Attributes is
    -- I_I --
    ---------
 
-   function I_I (Stream : access RST) return Integer is
+   function I_I (Stream : not null access RST) return Integer is
       T : S_I;
       L : SEO;
 
@@ -227,7 +227,7 @@ package body System.Stream_Attributes is
    -- I_LF --
    ----------
 
-   function I_LF (Stream : access RST) return Long_Float is
+   function I_LF (Stream : not null access RST) return Long_Float is
       T : S_LF;
       L : SEO;
 
@@ -245,7 +245,7 @@ package body System.Stream_Attributes is
    -- I_LI --
    ----------
 
-   function I_LI (Stream : access RST) return Long_Integer is
+   function I_LI (Stream : not null access RST) return Long_Integer is
       T : S_LI;
       L : SEO;
 
@@ -263,7 +263,7 @@ package body System.Stream_Attributes is
    -- I_LLF --
    -----------
 
-   function I_LLF (Stream : access RST) return Long_Long_Float is
+   function I_LLF (Stream : not null access RST) return Long_Long_Float is
       T : S_LLF;
       L : SEO;
 
@@ -281,7 +281,7 @@ package body System.Stream_Attributes is
    -- I_LLI --
    -----------
 
-   function I_LLI (Stream : access RST) return Long_Long_Integer is
+   function I_LLI (Stream : not null access RST) return Long_Long_Integer is
       T : S_LLI;
       L : SEO;
 
@@ -299,7 +299,9 @@ package body System.Stream_Attributes is
    -- I_LLU --
    -----------
 
-   function I_LLU (Stream : access RST) return UST.Long_Long_Unsigned is
+   function I_LLU
+     (Stream : not null access RST) return UST.Long_Long_Unsigned
+   is
       T : S_LLU;
       L : SEO;
 
@@ -317,7 +319,7 @@ package body System.Stream_Attributes is
    -- I_LU --
    ----------
 
-   function I_LU (Stream : access RST) return UST.Long_Unsigned is
+   function I_LU (Stream : not null access RST) return UST.Long_Unsigned is
       T : S_LU;
       L : SEO;
 
@@ -335,7 +337,7 @@ package body System.Stream_Attributes is
    -- I_SF --
    ----------
 
-   function I_SF (Stream : access RST) return Short_Float is
+   function I_SF (Stream : not null access RST) return Short_Float is
       T : S_SF;
       L : SEO;
 
@@ -353,7 +355,7 @@ package body System.Stream_Attributes is
    -- I_SI --
    ----------
 
-   function I_SI (Stream : access RST) return Short_Integer is
+   function I_SI (Stream : not null access RST) return Short_Integer is
       T : S_SI;
       L : SEO;
 
@@ -371,7 +373,7 @@ package body System.Stream_Attributes is
    -- I_SSI --
    -----------
 
-   function I_SSI (Stream : access RST) return Short_Short_Integer is
+   function I_SSI (Stream : not null access RST) return Short_Short_Integer is
       T : S_SSI;
       L : SEO;
 
@@ -389,7 +391,9 @@ package body System.Stream_Attributes is
    -- I_SSU --
    -----------
 
-   function I_SSU (Stream : access RST) return UST.Short_Short_Unsigned is
+   function I_SSU
+     (Stream : not null access RST) return UST.Short_Short_Unsigned
+   is
       T : S_SSU;
       L : SEO;
 
@@ -407,7 +411,7 @@ package body System.Stream_Attributes is
    -- I_SU --
    ----------
 
-   function I_SU (Stream : access RST) return UST.Short_Unsigned is
+   function I_SU (Stream : not null access RST) return UST.Short_Unsigned is
       T : S_SU;
       L : SEO;
 
@@ -425,7 +429,7 @@ package body System.Stream_Attributes is
    -- I_U --
    ---------
 
-   function I_U (Stream : access RST) return UST.Unsigned is
+   function I_U (Stream : not null access RST) return UST.Unsigned is
       T : S_U;
       L : SEO;
 
@@ -443,7 +447,7 @@ package body System.Stream_Attributes is
    -- I_WC --
    ----------
 
-   function I_WC (Stream : access RST) return Wide_Character is
+   function I_WC (Stream : not null access RST) return Wide_Character is
       T : S_WC;
       L : SEO;
 
@@ -461,7 +465,7 @@ package body System.Stream_Attributes is
    -- W_AD --
    ----------
 
-   procedure W_AD (Stream : access RST; Item : in Fat_Pointer) is
+   procedure W_AD (Stream : not null access RST; Item : in Fat_Pointer) is
       T : constant S_AD := From_AD (Item);
 
    begin
@@ -472,7 +476,7 @@ package body System.Stream_Attributes is
    -- W_AS --
    ----------
 
-   procedure W_AS (Stream : access RST; Item : in Thin_Pointer) is
+   procedure W_AS (Stream : not null access RST; Item : in Thin_Pointer) is
       T : constant S_AS := From_AS (Item);
 
    begin
@@ -483,7 +487,7 @@ package body System.Stream_Attributes is
    -- W_B --
    ---------
 
-   procedure W_B (Stream : access RST; Item : in Boolean) is
+   procedure W_B (Stream : not null access RST; Item : in Boolean) is
       T : S_B;
 
    begin
@@ -495,7 +499,7 @@ package body System.Stream_Attributes is
    -- W_C --
    ---------
 
-   procedure W_C (Stream : access RST; Item : in Character) is
+   procedure W_C (Stream : not null access RST; Item : in Character) is
       T : S_C;
 
    begin
@@ -507,7 +511,7 @@ package body System.Stream_Attributes is
    -- W_F --
    ---------
 
-   procedure W_F (Stream : access RST; Item : in Float) is
+   procedure W_F (Stream : not null access RST; Item : in Float) is
       T : constant S_F := From_F (Item);
 
    begin
@@ -518,7 +522,7 @@ package body System.Stream_Attributes is
    -- W_I --
    ---------
 
-   procedure W_I (Stream : access RST; Item : in Integer) is
+   procedure W_I (Stream : not null access RST; Item : in Integer) is
       T : constant S_I := From_I (Item);
 
    begin
@@ -529,7 +533,7 @@ package body System.Stream_Attributes is
    -- W_LF --
    ----------
 
-   procedure W_LF (Stream : access RST; Item : in Long_Float) is
+   procedure W_LF (Stream : not null access RST; Item : in Long_Float) is
       T : constant S_LF := From_LF (Item);
 
    begin
@@ -540,7 +544,7 @@ package body System.Stream_Attributes is
    -- W_LI --
    ----------
 
-   procedure W_LI (Stream : access RST; Item : in Long_Integer) is
+   procedure W_LI (Stream : not null access RST; Item : in Long_Integer) is
       T : constant S_LI := From_LI (Item);
 
    begin
@@ -551,7 +555,7 @@ package body System.Stream_Attributes is
    -- W_LLF --
    -----------
 
-   procedure W_LLF (Stream : access RST; Item : in Long_Long_Float) is
+   procedure W_LLF (Stream : not null access RST; Item : in Long_Long_Float) is
       T : constant S_LLF := From_LLF (Item);
 
    begin
@@ -562,7 +566,9 @@ package body System.Stream_Attributes is
    -- W_LLI --
    -----------
 
-   procedure W_LLI (Stream : access RST; Item : in Long_Long_Integer) is
+   procedure W_LLI
+     (Stream : not null access RST; Item : in Long_Long_Integer)
+   is
       T : constant S_LLI := From_LLI (Item);
 
    begin
@@ -573,7 +579,9 @@ package body System.Stream_Attributes is
    -- W_LLU --
    -----------
 
-   procedure W_LLU (Stream : access RST; Item : in UST.Long_Long_Unsigned) is
+   procedure W_LLU
+     (Stream : not null access RST; Item : in UST.Long_Long_Unsigned)
+   is
       T : constant S_LLU := From_LLU (Item);
 
    begin
@@ -584,7 +592,9 @@ package body System.Stream_Attributes is
    -- W_LU --
    ----------
 
-   procedure W_LU (Stream : access RST; Item : in UST.Long_Unsigned) is
+   procedure W_LU
+     (Stream : not null access RST; Item : in UST.Long_Unsigned)
+   is
       T : constant S_LU := From_LU (Item);
 
    begin
@@ -595,7 +605,7 @@ package body System.Stream_Attributes is
    -- W_SF --
    ----------
 
-   procedure W_SF (Stream : access RST; Item : in Short_Float) is
+   procedure W_SF (Stream : not null access RST; Item : in Short_Float) is
       T : constant S_SF := From_SF (Item);
 
    begin
@@ -606,7 +616,7 @@ package body System.Stream_Attributes is
    -- W_SI --
    ----------
 
-   procedure W_SI (Stream : access RST; Item : in Short_Integer) is
+   procedure W_SI (Stream : not null access RST; Item : in Short_Integer) is
       T : constant S_SI := From_SI (Item);
 
    begin
@@ -617,7 +627,9 @@ package body System.Stream_Attributes is
    -- W_SSI --
    -----------
 
-   procedure W_SSI (Stream : access RST; Item : in Short_Short_Integer) is
+   procedure W_SSI
+     (Stream : not null access RST; Item : in Short_Short_Integer)
+   is
       T : constant S_SSI := From_SSI (Item);
 
    begin
@@ -628,7 +640,9 @@ package body System.Stream_Attributes is
    -- W_SSU --
    -----------
 
-   procedure W_SSU (Stream : access RST; Item : in UST.Short_Short_Unsigned) is
+   procedure W_SSU
+     (Stream : not null access RST; Item : in UST.Short_Short_Unsigned)
+   is
       T : constant S_SSU := From_SSU (Item);
 
    begin
@@ -639,7 +653,9 @@ package body System.Stream_Attributes is
    -- W_SU --
    ----------
 
-   procedure W_SU (Stream : access RST; Item : in UST.Short_Unsigned) is
+   procedure W_SU
+     (Stream : not null access RST; Item : in UST.Short_Unsigned)
+   is
       T : constant S_SU := From_SU (Item);
 
    begin
@@ -650,7 +666,7 @@ package body System.Stream_Attributes is
    -- W_U --
    ---------
 
-   procedure W_U (Stream : access RST; Item : in UST.Unsigned) is
+   procedure W_U (Stream : not null access RST; Item : in UST.Unsigned) is
       T : constant S_U := From_U (Item);
 
    begin
@@ -661,7 +677,7 @@ package body System.Stream_Attributes is
    -- W_WC --
    ----------
 
-   procedure W_WC (Stream : access RST; Item : in Wide_Character) is
+   procedure W_WC (Stream : not null access RST; Item : in Wide_Character) is
       T : constant S_WC := From_WC (Item);
 
    begin
index c4d0a32..eefebd4 100644 (file)
@@ -101,25 +101,26 @@ package System.Stream_Attributes is
    --  is the same for all elementary types (no bounds or discriminants
    --  are involved).
 
-   function I_AD  (Stream : access RST) return Fat_Pointer;
-   function I_AS  (Stream : access RST) return Thin_Pointer;
-   function I_B   (Stream : access RST) return Boolean;
-   function I_C   (Stream : access RST) return Character;
-   function I_F   (Stream : access RST) return Float;
-   function I_I   (Stream : access RST) return Integer;
-   function I_LF  (Stream : access RST) return Long_Float;
-   function I_LI  (Stream : access RST) return Long_Integer;
-   function I_LLF (Stream : access RST) return Long_Long_Float;
-   function I_LLI (Stream : access RST) return Long_Long_Integer;
-   function I_LLU (Stream : access RST) return UST.Long_Long_Unsigned;
-   function I_LU  (Stream : access RST) return UST.Long_Unsigned;
-   function I_SF  (Stream : access RST) return Short_Float;
-   function I_SI  (Stream : access RST) return Short_Integer;
-   function I_SSI (Stream : access RST) return Short_Short_Integer;
-   function I_SSU (Stream : access RST) return UST.Short_Short_Unsigned;
-   function I_SU  (Stream : access RST) return UST.Short_Unsigned;
-   function I_U   (Stream : access RST) return UST.Unsigned;
-   function I_WC  (Stream : access RST) return Wide_Character;
+   function I_AD  (Stream : not null access RST) return Fat_Pointer;
+   function I_AS  (Stream : not null access RST) return Thin_Pointer;
+   function I_B   (Stream : not null access RST) return Boolean;
+   function I_C   (Stream : not null access RST) return Character;
+   function I_F   (Stream : not null access RST) return Float;
+   function I_I   (Stream : not null access RST) return Integer;
+   function I_LF  (Stream : not null access RST) return Long_Float;
+   function I_LI  (Stream : not null access RST) return Long_Integer;
+   function I_LLF (Stream : not null access RST) return Long_Long_Float;
+   function I_LLI (Stream : not null access RST) return Long_Long_Integer;
+   function I_LLU (Stream : not null access RST) return UST.Long_Long_Unsigned;
+   function I_LU  (Stream : not null access RST) return UST.Long_Unsigned;
+   function I_SF  (Stream : not null access RST) return Short_Float;
+   function I_SI  (Stream : not null access RST) return Short_Integer;
+   function I_SSI (Stream : not null access RST) return Short_Short_Integer;
+   function I_SSU (Stream : not null access RST)
+     return UST.Short_Short_Unsigned;
+   function I_SU  (Stream : not null access RST) return UST.Short_Unsigned;
+   function I_U   (Stream : not null access RST) return UST.Unsigned;
+   function I_WC  (Stream : not null access RST) return Wide_Character;
 
    -----------------------
    -- Output Procedures --
@@ -130,25 +131,29 @@ package System.Stream_Attributes is
    --  between 'Write and 'Output because there are no discriminants
    --  or bounds to be written.
 
-   procedure W_AD  (Stream : access RST; Item : in Fat_Pointer);
-   procedure W_AS  (Stream : access RST; Item : in Thin_Pointer);
-   procedure W_B   (Stream : access RST; Item : in Boolean);
-   procedure W_C   (Stream : access RST; Item : in Character);
-   procedure W_F   (Stream : access RST; Item : in Float);
-   procedure W_I   (Stream : access RST; Item : in Integer);
-   procedure W_LF  (Stream : access RST; Item : in Long_Float);
-   procedure W_LI  (Stream : access RST; Item : in Long_Integer);
-   procedure W_LLF (Stream : access RST; Item : in Long_Long_Float);
-   procedure W_LLI (Stream : access RST; Item : in Long_Long_Integer);
-   procedure W_LLU (Stream : access RST; Item : in UST.Long_Long_Unsigned);
-   procedure W_LU  (Stream : access RST; Item : in UST.Long_Unsigned);
-   procedure W_SF  (Stream : access RST; Item : in Short_Float);
-   procedure W_SI  (Stream : access RST; Item : in Short_Integer);
-   procedure W_SSI (Stream : access RST; Item : in Short_Short_Integer);
-   procedure W_SSU (Stream : access RST; Item : in UST.Short_Short_Unsigned);
-   procedure W_SU  (Stream : access RST; Item : in UST.Short_Unsigned);
-   procedure W_U   (Stream : access RST; Item : in UST.Unsigned);
-   procedure W_WC  (Stream : access RST; Item : in Wide_Character);
+   procedure W_AD  (Stream : not null access RST; Item : in Fat_Pointer);
+   procedure W_AS  (Stream : not null access RST; Item : in Thin_Pointer);
+   procedure W_B   (Stream : not null access RST; Item : in Boolean);
+   procedure W_C   (Stream : not null access RST; Item : in Character);
+   procedure W_F   (Stream : not null access RST; Item : in Float);
+   procedure W_I   (Stream : not null access RST; Item : in Integer);
+   procedure W_LF  (Stream : not null access RST; Item : in Long_Float);
+   procedure W_LI  (Stream : not null access RST; Item : in Long_Integer);
+   procedure W_LLF (Stream : not null access RST; Item : in Long_Long_Float);
+   procedure W_LLI (Stream : not null access RST; Item : in Long_Long_Integer);
+   procedure W_LLU (Stream : not null access RST;
+                    Item   : in UST.Long_Long_Unsigned);
+   procedure W_LU  (Stream : not null access RST; Item : in UST.Long_Unsigned);
+   procedure W_SF  (Stream : not null access RST; Item : in Short_Float);
+   procedure W_SI  (Stream : not null access RST; Item : in Short_Integer);
+   procedure W_SSI (Stream : not null access RST;
+                    Item   : in Short_Short_Integer);
+   procedure W_SSU (Stream : not null access RST;
+                    Item   : in UST.Short_Short_Unsigned);
+   procedure W_SU  (Stream : not null access RST;
+                    Item   : in UST.Short_Unsigned);
+   procedure W_U   (Stream : not null access RST; Item : in UST.Unsigned);
+   procedure W_WC  (Stream : not null access RST; Item : in Wide_Character);
 
    ----------------------------
    -- Composite Input/Output --
index af8c4c6..63aa286 100644 (file)
@@ -279,7 +279,7 @@ package body System.Stream_Attributes is
    -- I_AD --
    ----------
 
-   function I_AD (Stream : access RST) return Fat_Pointer is
+   function I_AD (Stream : not null access RST) return Fat_Pointer is
       FP : Fat_Pointer;
 
    begin
@@ -293,7 +293,7 @@ package body System.Stream_Attributes is
    -- I_AS --
    ----------
 
-   function I_AS (Stream : access RST) return Thin_Pointer is
+   function I_AS (Stream : not null access RST) return Thin_Pointer is
       S : XDR_S_TM;
       L : SEO;
       U : XDR_TM := 0;
@@ -316,7 +316,7 @@ package body System.Stream_Attributes is
    -- I_B --
    ---------
 
-   function I_B (Stream : access RST) return Boolean is
+   function I_B (Stream : not null access RST) return Boolean is
    begin
       case I_SSU (Stream) is
          when 0      => return False;
@@ -329,7 +329,7 @@ package body System.Stream_Attributes is
    -- I_C --
    ---------
 
-   function I_C (Stream : access RST) return Character is
+   function I_C (Stream : not null access RST) return Character is
       S : XDR_S_C;
       L : SEO;
 
@@ -350,7 +350,7 @@ package body System.Stream_Attributes is
    -- I_F --
    ---------
 
-   function I_F (Stream : access RST) return Float is
+   function I_F (Stream : not null access RST) return Float is
       I       : constant Precision := Single;
       E_Size  : Integer  renames Fields (I).E_Size;
       E_Bias  : Integer  renames Fields (I).E_Bias;
@@ -431,7 +431,7 @@ package body System.Stream_Attributes is
    -- I_I --
    ---------
 
-   function I_I (Stream : access RST) return Integer is
+   function I_I (Stream : not null access RST) return Integer is
       S : XDR_S_I;
       L : SEO;
       U : XDR_U := 0;
@@ -465,7 +465,7 @@ package body System.Stream_Attributes is
    -- I_LF --
    ----------
 
-   function I_LF (Stream : access RST) return Long_Float is
+   function I_LF (Stream : not null access RST) return Long_Float is
       I       : constant Precision := Double;
       E_Size  : Integer  renames Fields (I).E_Size;
       E_Bias  : Integer  renames Fields (I).E_Bias;
@@ -548,7 +548,7 @@ package body System.Stream_Attributes is
    -- I_LI --
    ----------
 
-   function I_LI (Stream : access RST) return Long_Integer is
+   function I_LI (Stream : not null access RST) return Long_Integer is
       S : XDR_S_LI;
       L : SEO;
       U : Unsigned := 0;
@@ -594,7 +594,7 @@ package body System.Stream_Attributes is
    -- I_LLF --
    -----------
 
-   function I_LLF (Stream : access RST) return Long_Long_Float is
+   function I_LLF (Stream : not null access RST) return Long_Long_Float is
       I       : constant Precision := Quadruple;
       E_Size  : Integer  renames Fields (I).E_Size;
       E_Bias  : Integer  renames Fields (I).E_Bias;
@@ -683,7 +683,7 @@ package body System.Stream_Attributes is
    -- I_LLI --
    -----------
 
-   function I_LLI (Stream : access RST) return Long_Long_Integer is
+   function I_LLI (Stream : not null access RST) return Long_Long_Integer is
       S : XDR_S_LLI;
       L : SEO;
       U : Unsigned := 0;
@@ -726,7 +726,7 @@ package body System.Stream_Attributes is
    -- I_LLU --
    -----------
 
-   function I_LLU (Stream : access RST) return Long_Long_Unsigned is
+   function I_LLU (Stream : not null access RST) return Long_Long_Unsigned is
       S : XDR_S_LLU;
       L : SEO;
       U : Unsigned := 0;
@@ -763,7 +763,7 @@ package body System.Stream_Attributes is
    -- I_LU --
    ----------
 
-   function I_LU (Stream : access RST) return Long_Unsigned is
+   function I_LU (Stream : not null access RST) return Long_Unsigned is
       S : XDR_S_LU;
       L : SEO;
       U : Unsigned := 0;
@@ -800,7 +800,7 @@ package body System.Stream_Attributes is
    -- I_SF --
    ----------
 
-   function I_SF (Stream : access RST) return Short_Float is
+   function I_SF (Stream : not null access RST) return Short_Float is
       I       : constant Precision := Single;
       E_Size  : Integer  renames Fields (I).E_Size;
       E_Bias  : Integer  renames Fields (I).E_Bias;
@@ -881,7 +881,7 @@ package body System.Stream_Attributes is
    -- I_SI --
    ----------
 
-   function I_SI (Stream : access RST) return Short_Integer is
+   function I_SI (Stream : not null access RST) return Short_Integer is
       S : XDR_S_SI;
       L : SEO;
       U : XDR_SU := 0;
@@ -914,7 +914,7 @@ package body System.Stream_Attributes is
    -- I_SSI --
    -----------
 
-   function I_SSI (Stream : access RST) return Short_Short_Integer is
+   function I_SSI (Stream : not null access RST) return Short_Short_Integer is
       S : XDR_S_SSI;
       L : SEO;
       U : XDR_SSU;
@@ -943,7 +943,7 @@ package body System.Stream_Attributes is
    -- I_SSU --
    -----------
 
-   function I_SSU (Stream : access RST) return Short_Short_Unsigned is
+   function I_SSU (Stream : not null access RST) return Short_Short_Unsigned is
       S : XDR_S_SSU;
       L : SEO;
       U : XDR_SSU := 0;
@@ -964,7 +964,7 @@ package body System.Stream_Attributes is
    -- I_SU --
    ----------
 
-   function I_SU (Stream : access RST) return Short_Unsigned is
+   function I_SU (Stream : not null access RST) return Short_Unsigned is
       S : XDR_S_SU;
       L : SEO;
       U : XDR_SU := 0;
@@ -989,7 +989,7 @@ package body System.Stream_Attributes is
    -- I_U --
    ---------
 
-   function I_U (Stream : access RST) return Unsigned is
+   function I_U (Stream : not null access RST) return Unsigned is
       S : XDR_S_U;
       L : SEO;
       U : XDR_U := 0;
@@ -1016,7 +1016,7 @@ package body System.Stream_Attributes is
    -- I_WC --
    ----------
 
-   function I_WC (Stream : access RST) return Wide_Character is
+   function I_WC (Stream : not null access RST) return Wide_Character is
       S : XDR_S_WC;
       L : SEO;
       U : XDR_WC := 0;
@@ -1041,7 +1041,7 @@ package body System.Stream_Attributes is
    -- W_AD --
    ----------
 
-   procedure W_AD (Stream : access RST; Item : in Fat_Pointer) is
+   procedure W_AD (Stream : not null access RST; Item : in Fat_Pointer) is
       S : XDR_S_TM;
       U : XDR_TM;
 
@@ -1071,7 +1071,7 @@ package body System.Stream_Attributes is
    -- W_AS --
    ----------
 
-   procedure W_AS (Stream : access RST; Item : in Thin_Pointer) is
+   procedure W_AS (Stream : not null access RST; Item : in Thin_Pointer) is
       S : XDR_S_TM;
       U : XDR_TM := XDR_TM (To_XDR_SA (Item.P1));
 
@@ -1092,7 +1092,7 @@ package body System.Stream_Attributes is
    -- W_B --
    ---------
 
-   procedure W_B (Stream : access RST; Item : in Boolean) is
+   procedure W_B (Stream : not null access RST; Item : in Boolean) is
    begin
       if Item then
          W_SSU (Stream, 1);
@@ -1105,7 +1105,7 @@ package body System.Stream_Attributes is
    -- W_C --
    ---------
 
-   procedure W_C (Stream : access RST; Item : in Character) is
+   procedure W_C (Stream : not null access RST; Item : in Character) is
       S : XDR_S_C;
 
       pragma Assert (C_L = 1);
@@ -1123,7 +1123,7 @@ package body System.Stream_Attributes is
    -- W_F --
    ---------
 
-   procedure W_F (Stream : access RST; Item : in Float) is
+   procedure W_F (Stream : not null access RST; Item : in Float) is
       I       : constant Precision := Single;
       E_Size  : Integer  renames Fields (I).E_Size;
       E_Bias  : Integer  renames Fields (I).E_Bias;
@@ -1205,7 +1205,7 @@ package body System.Stream_Attributes is
    -- W_I --
    ---------
 
-   procedure W_I (Stream : access RST; Item : in Integer) is
+   procedure W_I (Stream : not null access RST; Item : in Integer) is
       S : XDR_S_I;
       U : XDR_U;
 
@@ -1239,7 +1239,7 @@ package body System.Stream_Attributes is
    -- W_LF --
    ----------
 
-   procedure W_LF (Stream : access RST; Item : in Long_Float) is
+   procedure W_LF (Stream : not null access RST; Item : in Long_Float) is
       I       : constant Precision := Double;
       E_Size  : Integer  renames Fields (I).E_Size;
       E_Bias  : Integer  renames Fields (I).E_Bias;
@@ -1321,7 +1321,7 @@ package body System.Stream_Attributes is
    -- W_LI --
    ----------
 
-   procedure W_LI (Stream : access RST; Item : in Long_Integer) is
+   procedure W_LI (Stream : not null access RST; Item : in Long_Integer) is
       S : XDR_S_LI;
       U : Unsigned;
       X : Long_Unsigned;
@@ -1367,7 +1367,7 @@ package body System.Stream_Attributes is
    -- W_LLF --
    -----------
 
-   procedure W_LLF (Stream : access RST; Item : in Long_Long_Float) is
+   procedure W_LLF (Stream : not null access RST; Item : in Long_Long_Float) is
       I       : constant Precision := Quadruple;
       E_Size  : Integer  renames Fields (I).E_Size;
       E_Bias  : Integer  renames Fields (I).E_Bias;
@@ -1462,7 +1462,9 @@ package body System.Stream_Attributes is
    -- W_LLI --
    -----------
 
-   procedure W_LLI (Stream : access RST; Item : in Long_Long_Integer) is
+   procedure W_LLI (Stream : not null access RST;
+                    Item   : in Long_Long_Integer)
+   is
       S : XDR_S_LLI;
       U : Unsigned;
       X : Long_Long_Unsigned;
@@ -1508,7 +1510,8 @@ package body System.Stream_Attributes is
    -- W_LLU --
    -----------
 
-   procedure W_LLU (Stream : access RST; Item : in Long_Long_Unsigned) is
+   procedure W_LLU (Stream : not null access RST;
+                    Item   : in Long_Long_Unsigned) is
       S : XDR_S_LLU;
       U : Unsigned;
       X : Long_Long_Unsigned := Item;
@@ -1545,7 +1548,7 @@ package body System.Stream_Attributes is
    -- W_LU --
    ----------
 
-   procedure W_LU (Stream : access RST; Item : in Long_Unsigned) is
+   procedure W_LU (Stream : not null access RST; Item : in Long_Unsigned) is
       S : XDR_S_LU;
       U : Unsigned;
       X : Long_Unsigned := Item;
@@ -1581,7 +1584,7 @@ package body System.Stream_Attributes is
    -- W_SF --
    ----------
 
-   procedure W_SF (Stream : access RST; Item : in Short_Float) is
+   procedure W_SF (Stream : not null access RST; Item : in Short_Float) is
       I       : constant Precision := Single;
       E_Size  : Integer  renames Fields (I).E_Size;
       E_Bias  : Integer  renames Fields (I).E_Bias;
@@ -1663,7 +1666,7 @@ package body System.Stream_Attributes is
    -- W_SI --
    ----------
 
-   procedure W_SI (Stream : access RST; Item : in Short_Integer) is
+   procedure W_SI (Stream : not null access RST; Item : in Short_Integer) is
       S : XDR_S_SI;
       U : XDR_SU;
 
@@ -1697,7 +1700,10 @@ package body System.Stream_Attributes is
    -- W_SSI --
    -----------
 
-   procedure W_SSI (Stream : access RST; Item : in Short_Short_Integer) is
+   procedure W_SSI
+     (Stream : not null access RST;
+      Item   : in Short_Short_Integer)
+   is
       S : XDR_S_SSI;
       U : XDR_SSU;
 
@@ -1724,9 +1730,12 @@ package body System.Stream_Attributes is
    -- W_SSU --
    -----------
 
-   procedure W_SSU (Stream : access RST; Item : in Short_Short_Unsigned) is
+   procedure W_SSU
+     (Stream : not null access RST;
+      Item   : in Short_Short_Unsigned)
+   is
+      U : constant XDR_SSU := XDR_SSU (Item);
       S : XDR_S_SSU;
-      U : XDR_SSU := XDR_SSU (Item);
 
    begin
       S (1) := SE (U);
@@ -1738,7 +1747,7 @@ package body System.Stream_Attributes is
    -- W_SU --
    ----------
 
-   procedure W_SU (Stream : access RST; Item : in Short_Unsigned) is
+   procedure W_SU (Stream : not null access RST; Item : in Short_Unsigned) is
       S : XDR_S_SU;
       U : XDR_SU := XDR_SU (Item);
 
@@ -1763,7 +1772,7 @@ package body System.Stream_Attributes is
    -- W_U --
    ---------
 
-   procedure W_U (Stream : access RST; Item : in Unsigned) is
+   procedure W_U (Stream : not null access RST; Item : in Unsigned) is
       S : XDR_S_U;
       U : XDR_U := XDR_U (Item);
 
@@ -1788,7 +1797,7 @@ package body System.Stream_Attributes is
    -- W_WC --
    ----------
 
-   procedure W_WC (Stream : access RST; Item : in Wide_Character) is
+   procedure W_WC (Stream : not null access RST; Item : in Wide_Character) is
       S : XDR_S_WC;
       U : XDR_WC;