aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.h
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2020-11-19 11:04:52 +0100
committerEric Botcazou <ebotcazou@adacore.com>2020-11-19 11:04:52 +0100
commit43a0debd527b75eb564cad6bd47f5d5bb301dfad (patch)
treeda21597c3e40f05e45153c7ba9c0bedfb42495d1 /gcc/dwarf2out.h
parent0d8290959ecf2c5f1dd062e57782b5e91be0f8f6 (diff)
downloadgcc-43a0debd527b75eb564cad6bd47f5d5bb301dfad.zip
gcc-43a0debd527b75eb564cad6bd47f5d5bb301dfad.tar.gz
gcc-43a0debd527b75eb564cad6bd47f5d5bb301dfad.tar.bz2
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.
Diffstat (limited to 'gcc/dwarf2out.h')
-rw-r--r--gcc/dwarf2out.h17
1 files changed, 6 insertions, 11 deletions
diff --git a/gcc/dwarf2out.h b/gcc/dwarf2out.h
index 9571f8b..0b06cff 100644
--- a/gcc/dwarf2out.h
+++ b/gcc/dwarf2out.h
@@ -362,23 +362,18 @@ enum fixed_point_scale_factor
struct fixed_point_type_info
{
- /* A scale factor is the value one has to multiply with physical data in
- order to get the fixed point logical data. The DWARF standard enables one
- to encode it in three ways. */
+ /* The scale factor is the value one has to multiply the actual data with
+ to get the fixed point value. We support three ways to encode it. */
enum fixed_point_scale_factor scale_factor_kind;
union
{
- /* For binary scale factor, the scale factor is: 2 ** binary. */
+ /* For a binary scale factor, the scale factor is 2 ** binary. */
int binary;
- /* For decimal scale factor, the scale factor is: 10 ** binary. */
+ /* For a decimal scale factor, the scale factor is 10 ** decimal. */
int decimal;
- /* For arbitrary scale factor, the scale factor is:
+ /* For an arbitrary scale factor, the scale factor is the ratio
numerator / denominator. */
- struct
- {
- unsigned HOST_WIDE_INT numerator;
- HOST_WIDE_INT denominator;
- } arbitrary;
+ struct { tree numerator; tree denominator; } arbitrary;
} scale_factor;
};