diff --git a/gcc/ada/atree.adb b/gcc/ada/atree.adb
index f274bc8b623b71c7d434a0b1b86cc43e27e1ceb8..1e8b1ccf1eb15a2e6d01f47f083d3c7c66895fe7 100644
--- a/gcc/ada/atree.adb
+++ b/gcc/ada/atree.adb
@@ -949,6 +949,8 @@ package body Atree is
       Delete_Field (Field3 (Node));
       Delete_Field (Field4 (Node));
       Delete_Field (Field5 (Node));
+
+      --  ??? According to spec, Node itself should be deleted as well
    end Delete_Tree;
 
    -----------
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index b033704f744564e76a19135f4114a3d9ec8f61eb..dc181aa15866d1d6c38ee8f1a3fb703e91492bf4 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -3402,10 +3402,8 @@ package body Exp_Util is
            or else Nkind (N) = N_Subprogram_Body
            or else Nkind (N) = N_Package_Body
          then
-            Kill_Dead_Code
-              (Declarations (N), False);
-            Kill_Dead_Code
-              (Statements (Handled_Statement_Sequence (N)));
+            Kill_Dead_Code (Declarations (N), False);
+            Kill_Dead_Code (Statements (Handled_Statement_Sequence (N)));
 
             if Nkind (N) = N_Subprogram_Body then
                Set_Is_Eliminated (Defining_Entity (N));
@@ -3415,6 +3413,10 @@ package body Exp_Util is
             Kill_Dead_Code (Visible_Declarations (Specification (N)));
             Kill_Dead_Code (Private_Declarations (Specification (N)));
 
+            --  ??? After this point, Delete_Tree has been called on all
+            --  declarations in Specification (N), so references to
+            --  entities therein look suspicious.
+
             declare
                E : Entity_Id := First_Entity (Defining_Entity (N));
             begin
diff --git a/gcc/ada/g-soccon-vms.ads b/gcc/ada/g-soccon-vms.ads
index ab6c761d9d03e68f5dc73239e539117c96eaadd2..a8aff61fc74c1d497aa6a7651ee4de116f34287c 100644
--- a/gcc/ada/g-soccon-vms.ads
+++ b/gcc/ada/g-soccon-vms.ads
@@ -138,7 +138,7 @@ package GNAT.Sockets.Constants is
    MSG_OOB            : constant :=           1; --  Process out-of-band data
    MSG_PEEK           : constant :=           2; --  Peek at incoming data
    MSG_EOR            : constant :=           8; --  Send end of record
-   MSG_WAITALL        : constant :=          64; --  Wait for full reception
+   MSG_WAITALL        : constant :=         128; --  Wait for full reception
    MSG_NOSIGNAL       : constant :=          -1; --  No SIGPIPE on send
    MSG_Forced_Flags   : constant :=           0;
    --  Flags set on all send(2) calls
diff --git a/gcc/ada/gen-soccon.c b/gcc/ada/gen-soccon.c
index 26be9378df8b0fdae03658cf91917a17d5a6762b..79701bbad1029468e4306b6689acbeff44f64bf8 100644
--- a/gcc/ada/gen-soccon.c
+++ b/gcc/ada/gen-soccon.c
@@ -24,11 +24,17 @@
 
 /* This program generates g-soccon.ads */
 
-/* To build using DEC C:
-  CC/DEFINE="TARGET=""OpenVMS""" gen-soccon
-  LINK gen-soccon
-  RUN gen-soccon
-*/
+/*
+ * To build using DEC C:
+ *
+ * CC/DEFINE="TARGET=""OpenVMS""" gen-soccon
+ * LINK gen-soccon
+ * RUN gen-soccon
+ *
+ * Note: OpenVMS versions older than 8.3 provide an incorrect value in
+ * the DEC C header files for MSG_WAITALL. To generate the VMS version
+ * of g-soccon.ads, gen-soccon should be run on an 8.3 or later machine.
+ */
 
 #ifndef TARGET
 # error Please define TARGET