Enhance debug info for fixed-point types
authorEric Botcazou <ebotcazou@adacore.com>
Thu, 19 Nov 2020 10:04:52 +0000 (11:04 +0100)
committerEric Botcazou <ebotcazou@adacore.com>
Thu, 19 Nov 2020 10:04:52 +0000 (11:04 +0100)
commit43a0debd527b75eb564cad6bd47f5d5bb301dfad
treeda21597c3e40f05e45153c7ba9c0bedfb42495d1
parent0d8290959ecf2c5f1dd062e57782b5e91be0f8f6
Enhance debug info for fixed-point types

The Ada language supports fixed-point types as first-class citizens so
they need to be described as-is in the debug info.  We devised the
langhook get_fixed_point_type_info for this purpose a few years ago,
but it comes with a limitation for the representation of the scale
factor that we would need to lift in order to be able to represent
more fixed-point types.

gcc/ChangeLog:
* dwarf2out.h (struct fixed_point_type_info) <scale_factor>: Turn
numerator and denominator into a tree.
* dwarf2out.c (base_type_die): In the case of a fixed-point type
with arbitrary scale factor, call add_scalar_info on numerator and
denominator to emit the appropriate attributes.

gcc/ada/ChangeLog:
* exp_dbug.adb (Is_Handled_Scale_Factor): Delete.
(Get_Encoded_Name): Do not call it.
* gcc-interface/decl.c (gnat_to_gnu_entity) <Fixed_Point_Type>:
Tidy up and always use a meaningful description for arbitrary
scale factors.
* gcc-interface/misc.c (gnat_get_fixed_point_type_info): Remove
obsolete block and adjust the description of the scale factor.
gcc/ada/exp_dbug.adb
gcc/ada/gcc-interface/decl.c
gcc/ada/gcc-interface/misc.c
gcc/dwarf2out.c
gcc/dwarf2out.h