ada: Diagnose too large size clause on floating-point type
The problem is that the size clause changes the floating-point format used for the type, but it must not when this format is the widest format that is supported in hardware on the target. Instead a padding type must be built and the associated warning given. gcc/ada/ * gcc-interface/decl.cc (gnat_to_gnu_entity): Cap the Esize of a floating-point type to the size of the widest format supported in hardware if it is explicity defined.
This commit is contained in:
parent
1c9a6d8203
commit
571d0450b2
1 changed files with 4 additions and 0 deletions
|
@ -521,8 +521,12 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition)
|
|||
esize = UI_To_Int (Esize (gnat_entity));
|
||||
|
||||
if (IN (kind, Float_Kind))
|
||||
#ifdef WIDEST_HARDWARE_FP_SIZE
|
||||
max_esize = fp_prec_to_size (WIDEST_HARDWARE_FP_SIZE);
|
||||
#else
|
||||
max_esize
|
||||
= fp_prec_to_size (TYPE_PRECISION (long_double_type_node));
|
||||
#endif
|
||||
else if (IN (kind, Access_Kind))
|
||||
max_esize = POINTER_SIZE * 2;
|
||||
else
|
||||
|
|
Loading…
Add table
Reference in a new issue