From 5b3950bed95136ad2b5e037e29daf3a464dc7cd5 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Thu, 23 Apr 2020 16:22:28 +0200 Subject: [PATCH] [Ada] Fix host/target confusion for attribute To_Address 2020-06-18 Eric Botcazou gcc/ada/ * sem_attr.adb (Analyze_Attribute) : Use the address size of the target instead of the host when checking the value of a static expression. Also use standard idiom for exponentiation. --- gcc/ada/sem_attr.adb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index d444b9f..8045193 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -6274,9 +6274,9 @@ package body Sem_Attr is if Is_OK_Static_Expression (E1) then Val := Expr_Value (E1); - if Val < -(2 ** UI_From_Int (Standard'Address_Size - 1)) + if Val < -(Uint_2 ** (System_Address_Size - 1)) or else - Val > 2 ** UI_From_Int (Standard'Address_Size) - 1 + Val > Uint_2 ** System_Address_Size - 1 then Error_Attr ("address value out of range for % attribute", E1); end if; @@ -6293,7 +6293,7 @@ package body Sem_Attr is elsif Val < 0 then Set_Etype (E1, Universal_Integer); - -- Otherwise set type to Unsigned_64 to accommodate max values + -- Otherwise set type to Unsigned_64 to accommodate large values else Set_Etype (E1, Standard_Unsigned_64); -- 2.7.4