From: Eric Botcazou Date: Wed, 11 Sep 2024 17:37:08 +0000 (+0200) Subject: ada: Fix negative value returned by 'Image for array with nonnegative component X-Git-Tag: basepoints/gcc-16~5392 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cfbee1856f5125bbabc28088f62a86f3dee5a159;p=thirdparty%2Fgcc.git ada: Fix negative value returned by 'Image for array with nonnegative component The problem is that Exp_Put_Image.Build_Elementary_Put_Image_Call uses the signedness of the base type but the size of the first subtype, hence the discrepancy between them. gcc/ada/ChangeLog: PR ada/115535 * exp_put_image.adb (Build_Elementary_Put_Image_Call): Use the size of the underlying type to find the support type. --- diff --git a/gcc/ada/exp_put_image.adb b/gcc/ada/exp_put_image.adb index 190ac99b565..36254fffd61 100644 --- a/gcc/ada/exp_put_image.adb +++ b/gcc/ada/exp_put_image.adb @@ -293,10 +293,9 @@ package body Exp_Put_Image is Loc : constant Source_Ptr := Sloc (N); P_Type : constant Entity_Id := Entity (Prefix (N)); U_Type : constant Entity_Id := Underlying_Type (P_Type); - FST : constant Entity_Id := First_Subtype (U_Type); Sink : constant Node_Id := First (Expressions (N)); Item : constant Node_Id := Next (Sink); - P_Size : constant Uint := Esize (FST); + P_Size : constant Uint := Esize (U_Type); Lib_RE : RE_Id; begin