This patch updates calls to Esize and RM_Size so they will work with the
new representation of "unknown" (i.e.  "not yet set").  The old
representation is "Uint_0".  The new one will be "initial zero bits".

The new representation is not yet installed; we are still using Uint_0.
A future change will fix that.

In some cases, we have to explicitly set the size to Uint_0 in order to
preserve the old behavior.

Tested on x86_64-pc-linux-gnu, committed on trunk

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.

Attachment: patch.diff.gz
Description: application/gzip

Reply via email to