with CStand; use CStand;
with Einfo; use Einfo;
with Opt; use Opt;
with Stand; use Stand;
with Targparm; use Targparm;
with Ttypef; use Ttypef;
package body Sem_VFpt is
procedure Set_D_Float (E : Entity_Id) is
begin
Init_Size (Base_Type (E), 64);
Init_Alignment (Base_Type (E));
Init_Digits_Value (Base_Type (E), VAXDF_Digits);
Set_Vax_Float (Base_Type (E), True);
Set_Float_Bounds (Base_Type (E));
Init_Size (E, 64);
Init_Alignment (E);
Init_Digits_Value (E, VAXDF_Digits);
Set_Scalar_Range (E, Scalar_Range (Base_Type (E)));
end Set_D_Float;
procedure Set_F_Float (E : Entity_Id) is
begin
Init_Size (Base_Type (E), 32);
Init_Alignment (Base_Type (E));
Init_Digits_Value (Base_Type (E), VAXFF_Digits);
Set_Vax_Float (Base_Type (E), True);
Set_Float_Bounds (Base_Type (E));
Init_Size (E, 32);
Init_Alignment (E);
Init_Digits_Value (E, VAXFF_Digits);
Set_Scalar_Range (E, Scalar_Range (Base_Type (E)));
end Set_F_Float;
procedure Set_G_Float (E : Entity_Id) is
begin
Init_Size (Base_Type (E), 64);
Init_Alignment (Base_Type (E));
Init_Digits_Value (Base_Type (E), VAXGF_Digits);
Set_Vax_Float (Base_Type (E), True);
Set_Float_Bounds (Base_Type (E));
Init_Size (E, 64);
Init_Alignment (E);
Init_Digits_Value (E, VAXGF_Digits);
Set_Scalar_Range (E, Scalar_Range (Base_Type (E)));
end Set_G_Float;
procedure Set_IEEE_Long (E : Entity_Id) is
begin
Init_Size (Base_Type (E), 64);
Init_Alignment (Base_Type (E));
Init_Digits_Value (Base_Type (E), IEEEL_Digits);
Set_Vax_Float (Base_Type (E), False);
Set_Float_Bounds (Base_Type (E));
Init_Size (E, 64);
Init_Alignment (E);
Init_Digits_Value (E, IEEEL_Digits);
Set_Scalar_Range (E, Scalar_Range (Base_Type (E)));
end Set_IEEE_Long;
procedure Set_IEEE_Short (E : Entity_Id) is
begin
Init_Size (Base_Type (E), 32);
Init_Alignment (Base_Type (E));
Init_Digits_Value (Base_Type (E), IEEES_Digits);
Set_Vax_Float (Base_Type (E), False);
Set_Float_Bounds (Base_Type (E));
Init_Size (E, 32);
Init_Alignment (E);
Init_Digits_Value (E, IEEES_Digits);
Set_Scalar_Range (E, Scalar_Range (Base_Type (E)));
end Set_IEEE_Short;
procedure Set_Standard_Fpt_Formats is
begin
if Opt.Float_Format = 'I' then
Set_IEEE_Short (Standard_Float);
Set_IEEE_Long (Standard_Long_Float);
Set_IEEE_Long (Standard_Long_Long_Float);
else
Set_F_Float (Standard_Float);
if Opt.Float_Format_Long = 'D' then
Set_D_Float (Standard_Long_Float);
else
Set_G_Float (Standard_Long_Float);
end if;
if OpenVMS_On_Target then
Set_G_Float (Standard_Long_Long_Float);
end if;
end if;
end Set_Standard_Fpt_Formats;
end Sem_VFpt;