[Ada] Vectors: spurious error in -gnatwE mode
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
This commit is contained in:
parent
5e1c231ec7
commit
aeaa0347e9
2 changed files with 14 additions and 2 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue