diff mbox series

Fix PR ada/101094

Message ID 2097706.NgBsaNRSFp@fomalhaut
State New
Headers show
Series Fix PR ada/101094 | expand

Commit Message

Eric Botcazou July 1, 2021, 4:15 p.m. UTC
This is a minor regression present on mainline and 11 branch, whereby the 
value of the Enum_Rep attribute is always unsigned.

Tested on x86-64/Linux, applied on the mainline and 11 branch.


2021-07-01  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/101094
	* exp_attr.adb (Get_Integer_Type): Return an integer type with the
	same signedness as the input type.
diff mbox series

Patch

diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb
index 400398dcbc5..9dd3d9d9726 100644
--- a/gcc/ada/exp_attr.adb
+++ b/gcc/ada/exp_attr.adb
@@ -1851,14 +1851,13 @@  package body Exp_Attr is
       ----------------------
 
       function Get_Integer_Type (Typ : Entity_Id) return Entity_Id is
-         Siz     : constant Uint := Esize (Base_Type (Typ));
+         Siz : constant Uint := Esize (Base_Type (Typ));
 
       begin
          --  We need to accommodate invalid values of the base type since we
-         --  accept them for Enum_Rep and Pos, so we reason on the Esize. And
-         --  we use an unsigned type since the enumeration type is unsigned.
+         --  accept them for Enum_Rep and Pos, so we reason on the Esize.
 
-         return Small_Integer_Type_For (Siz, Uns => True);
+         return Small_Integer_Type_For (Siz, Uns => Is_Unsigned_Type (Typ));
       end Get_Integer_Type;
 
       ---------------------------------