From b23cdc01588b60f52a8c70c8f4465a068b49d317 Mon Sep 17 00:00:00 2001 From: Bob Duff Date: Fri, 2 Jul 2021 11:41:28 -0400 Subject: [Ada] Clean up uses of Esize and RM_Size gcc/ada/ * einfo-utils.adb: Add support (currently disabled) for using "initial zero" instead of "Uint_0" to represent "unknown". Call Known_ functions, instead of evilly duplicating their code inline. * fe.h (No_Uint_To_0): New function to convert No_Uint to Uint_0, in order to preserve existing behavior. (Copy_Esize, Copy_RM_Size): New imports from Einfo.Utils. * cstand.adb: Set size fields of Standard_Debug_Renaming_Type and Standard_Exception_Type. * checks.adb, exp_attr.adb, exp_ch3.adb, exp_ch5.adb, exp_ch6.adb, exp_pakd.adb, exp_util.adb, freeze.adb, itypes.adb, layout.adb, repinfo.adb, sem_attr.adb, sem_ch12.adb, sem_ch13.adb, sem_ch13.ads, sem_ch3.adb, sem_ch7.adb, sem_util.adb: Protect calls with Known_..., use Copy_... Remove assumption that Uint_0 represents "unknown". * types.ads (Nonzero_Int): New subtype. * gcc-interface/decl.c, gcc-interface/trans.c: Protect calls with Known_... and use Copy_... as appropriate, to avoid blowing up in unknown cases. Similarly, call No_Uint_To_0 to preserve existing behavior. --- gcc/ada/types.ads | 2 ++ 1 file changed, 2 insertions(+) (limited to 'gcc/ada/types.ads') diff --git a/gcc/ada/types.ads b/gcc/ada/types.ads index a74bfb6..2caaf50 100644 --- a/gcc/ada/types.ads +++ b/gcc/ada/types.ads @@ -59,6 +59,8 @@ package Types is subtype Pos is Int range 1 .. Int'Last; -- Positive Int values + subtype Nonzero_Int is Int with Predicate => Nonzero_Int /= 0; + type Word is mod 2 ** 32; -- Unsigned 32-bit integer -- cgit v1.1