[Ada] Vectors: spurious error in -gnatwE mode
authorBob Duff <duff@adacore.com>
Wed, 23 May 2018 10:23:19 +0000 (10:23 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Wed, 23 May 2018 10:23:19 +0000 (10:23 +0000)
This patch fixes a bug in which if Ada.Containers.Vectors is instantiated with
an Index_Type such that Index_Type'Base'Last is less than Count_Type'Last, and
the -gnatwE switch is used, the compiler gives spurious error messages.

The following test should compile quietly with -gnatwE:

gnatmake short_vectors.ads -gnatwa -gnatwE -gnatf

with Ada.Containers.Vectors;
package Short_Vectors is

   type Index_Type is range 1 .. 256;

   package Map_Pkg is new Ada.Containers.Vectors
     (Index_Type => Index_Type,
      Element_Type => Integer);

end Short_Vectors;

2018-05-23  Bob Duff  <duff@adacore.com>

gcc/ada/

* libgnat/a-convec.adb: (Insert, Insert_Space): Suppress warnings. The
code in question is not reachable in the case where Count_Type'Last is
out of range.

From-SVN: r260590

gcc/ada/ChangeLog
gcc/ada/libgnat/a-convec.adb

index 1f91142fae1b771632508bdd577b1d256f86f3fd..bb3d631a38de2ab20dc2fdb5ba7dd4633be79681 100644 (file)
@@ -1,3 +1,9 @@
+2018-05-23  Bob Duff  <duff@adacore.com>
+
+       * libgnat/a-convec.adb: (Insert, Insert_Space): Suppress warnings. The
+       code in question is not reachable in the case where Count_Type'Last is
+       out of range.
+
 2018-05-23  Yannick Moy  <moy@adacore.com>
 
        * doc/gnat_rm/implementation_defined_pragmas.rst: Clarify meaning of
index 285d3f54626b6d81205cc749706589ffa2cdd2a6..b098860ba70e9facdbaf5e56b5473f6891e12211 100644 (file)
@@ -999,9 +999,12 @@ package body Ada.Containers.Vectors is
 
             --  We know that No_Index (the same as Index_Type'First - 1) is
             --  less than 0, so it is safe to compute the following sum without
-            --  fear of overflow.
+            --  fear of overflow. We need to suppress warnings, because
+            --  otherwise we get an error in -gnatwE mode.
 
+            pragma Warnings (Off);
             Index := No_Index + Index_Type'Base (Count_Type'Last);
+            pragma Warnings (On);
 
             if Index <= Index_Type'Last then
 
@@ -1657,9 +1660,12 @@ package body Ada.Containers.Vectors is
 
             --  We know that No_Index (the same as Index_Type'First - 1) is
             --  less than 0, so it is safe to compute the following sum without
-            --  fear of overflow.
+            --  fear of overflow. We need to suppress warnings, because
+            --  otherwise we get an error in -gnatwE mode.
 
+            pragma Warnings (Off);
             Index := No_Index + Index_Type'Base (Count_Type'Last);
+            pragma Warnings (On);
 
             if Index <= Index_Type'Last then