[Ada] Expand 'Pos and 'Val for enumeration types with standard representation
authorEric Botcazou <ebotcazou@adacore.com>
Thu, 9 Apr 2020 09:42:22 +0000 (11:42 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Tue, 16 Jun 2020 13:07:18 +0000 (09:07 -0400)
commitf193b29e42bcca7b92752d98d3a38dc9df884bef
treec956536208297d7eae77b9b7a0a5e977fbc64a90
parentdad94b3aca12f25cd2b3f6c32b7e55d69c8c4ad6
[Ada] Expand 'Pos and 'Val for enumeration types with standard representation

2020-06-16  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sinfo.ads (Conversion_OK): Document use for 'Pos and 'Val.
* exp_attr.adb (Get_Integer_Type): New function returning a
small integer type appropriate for an enumeration type.
(Expand_N_Attribute_Reference) <Attribute_Enum_Rep>: Call it.
<Attribute_Pos>: For an enumeration type with a standard
representation, expand to a conversion with Conversion_OK.
<Attribute_Val>: Likewise.
* exp_ch4.adb (Expand_N_Type_Conversion): Do not expand when
the target is an enumeration type and Conversion_OK is set.
gcc/ada/exp_attr.adb
gcc/ada/exp_ch4.adb
gcc/ada/sinfo.ads