2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_attr.adb (Analyze_Attribute) <To_Address>: 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.
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;
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);