[Ada] Usage of signed type in array bounds in CCG
authorJavier Miranda <miranda@adacore.com>
Mon, 22 Jul 2019 13:57:46 +0000 (13:57 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 22 Jul 2019 13:57:46 +0000 (13:57 +0000)
commit22862ba6d688c95d9f9577746d212183a11c44da
tree6ddb30a27da5adddf79b4b6b394811f6d114ee12
parent5dcbefb1c407fcb949597c4257726bfbc8760cfb
[Ada] Usage of signed type in array bounds in CCG

2019-07-22  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* exp_ch4.adb (Size_In_Storage_Elements): Improve the expansion
to handle array indexes that are modular type.
(Expand_N_Allocator): For 32-bit targets improve the generation
of the runtime check associated with large arrays supporting
arrays initialized with a qualified expression.
* libgnat/s-imenne.adb (Image_Enumeration_8,
Image_Enumeration_16, Image_Enumeration_32): Define the index of
Index_Table with range Natural'First .. Names'Length since in
the worst case all the literals of the enumeration type would be
single letter literals and the Table built by the frontend would
have as many components as the length of the names string. As a
result of this enhancement, the internal tables declared using
Index_Table have a length closer to the real needs, thus
avoiding the declaration of large arrays on 32-bit CCG targets.

From-SVN: r273685
gcc/ada/ChangeLog
gcc/ada/exp_ch4.adb
gcc/ada/libgnat/s-imenne.adb