From: Bob Duff Date: Wed, 17 Mar 2021 16:14:12 +0000 (-0400) Subject: [Ada] Correct A'First (N) where N is an object name X-Git-Tag: basepoints/gcc-13~6689 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=537f0ce3078e4b1dd9f357ed4ed791e05024455a;p=thirdparty%2Fgcc.git [Ada] Correct A'First (N) where N is an object name gcc/ada/ * sem_attr.adb (Check_Array_Or_Scalar_Type): Use Expr_Value instead of Intval, because the latter only exists in literals. Remove Set_Etype on E1; setting the type is done elsewhere. --- diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index 63b0f09ea5d4..f9b17c75d4bb 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -1603,7 +1603,6 @@ package body Sem_Attr is -- Local variables - Dims : Int; Index : Entity_Id; -- Start of processing for Check_Array_Or_Scalar_Type @@ -1667,14 +1666,16 @@ package body Sem_Attr is Set_Etype (N, Base_Type (Etype (Index))); else - Dims := UI_To_Int (Intval (E1)); - - for J in 1 .. Dims - 1 loop - Next_Index (Index); - end loop; + declare + Udims : constant Uint := Expr_Value (E1); + Dims : constant Int := UI_To_Int (Udims); + begin + for J in 1 .. Dims - 1 loop + Next_Index (Index); + end loop; + end; Set_Etype (N, Base_Type (Etype (Index))); - Set_Etype (E1, Standard_Integer); end if; end if; end Check_Array_Or_Scalar_Type;