2010-09-28 Joel Sherrill <joel.sherrill@oarcorp.com>
authorjoel <joel@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 30 Sep 2010 16:01:30 +0000 (16:01 +0000)
committerjoel <joel@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 30 Sep 2010 16:01:30 +0000 (16:01 +0000)
* g-socket.adb: Move pragma to disable warnings in case
multiple errnos are not defined by target.

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

gcc/ada/ChangeLog
gcc/ada/g-socket.adb

index e585924..52be3a9 100644 (file)
@@ -1,3 +1,8 @@
+2010-09-28  Joel Sherrill <joel.sherrill@oarcorp.com>
+
+       * g-socket.adb: Move pragma to disable warnings in case
+       multiple errnos are not defined by target.
+
 2010-09-29  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc-interface/utils.c (handle_leaf_attribute): Fix long line.
index b75c525..65bfdd5 100644 (file)
@@ -1821,12 +1821,14 @@ package body GNAT.Sockets is
          return Resource_Temporarily_Unavailable;
       end if;
 
-      pragma Warnings (On);
-
       --  This is not a case statement because if a particular error
       --  number constant is not defined, s-oscons-tmplt.c defines
       --  it to -1.  If multiple constants are not defined, they
       --  would each be -1 and result in a "duplicate value in case" error.
+      --
+      --  But we have to leave warnings off because the compiler is also
+      --  smart enough to note that when two errnos have the same value,
+      --  the second if condition is useless.
       if Error_Value = ENOERROR then
          return Success;
       elsif Error_Value = EACCES then
@@ -1910,6 +1912,8 @@ package body GNAT.Sockets is
       else
          return Cannot_Resolve_Error;
       end if;
+      pragma Warnings (On);
+
    end Resolve_Error;
 
    -----------------------