[Ada] Support of attributes Image, Put_Image, Val and Width for 128-bit types
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 27 Jun 2020 10:39:49 +0000 (12:39 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 21 Oct 2020 07:22:50 +0000 (03:22 -0400)
commitcb7584a41d9f565a90fc24c418b2c7f0233ba31e
tree7ef8b462ba914a8cdfa99de9f3845ffbe5ef0a7b
parenta219511d1d20775ea418de1b7e60dd90030c8354
[Ada] Support of attributes Image, Put_Image, Val and Width for 128-bit types

gcc/ada/

* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-widint,
s-widthi, s-widuns, s-widuns.
(GNATRTL_128BIT_OBJS): Add s-imglllb, s-imgllli, s-imglllu, s-imglllw,
s-valllli, s-vallllu, s-widllli, s-widlllu.
* exp_imgv.adb (Expand_Image_Attribute): Deal with 128-bit types.
(Expand_Value_Attribute): Likewise.
(Expand_Width_Attribute): Likewise.
* exp_put_image.adb (Build_Elementary_Put_Image_Call): Likewise.
* krunch.adb (Krunch): Deal with s-img, s-val and s-wid prefixes.
* rtsfind.ads (RTU_Id): Add System_Img_LLLI, System_Img_LLLU,
System_Val_LLLI, System_Val_LLL, System_Wid_Int, System_Wid_LLLI,
System_Wid_LLLU, System_Wid_Uns).
(RE_Id): Add RE_Image_Long_Long_Long_Integer,
RE_Image_Long_Long_Long_Unsigned,
RE_Put_Image_Long_Long_Long_Integer,
RE_Put_Image_Long_Long_Long_Unsigned,
RE_Long_Long_Long_Unsigned, RE_Value_Long_Long_Long_Integer,
RE_Value_Long_Long_Long_Unsigned, RE_Width_Integer,
RE_Width_Long_Long_Long_Integer, RE_Width_Long_Long_Long_Unsigned,
RE_Width_Unsigned, RE_Image_Long_Long_Long_Integer,
RE_Image_Long_Long_Long_Unsigned, RE_Put_Image_Long_Long_Long_Integer,
RE_Put_Image_Long_Long_Long_Unsigned, RE_Long_Long_Long_Unsigned,
RE_Value_Long_Long_Long_Integer, RE_Value_Long_Long_Long_Unsigned,
RE_Width_Integer, RE_Width_Long_Long_Long_Integer,
RE_Width_Long_Long_Long_Unsigned, RE_Width_Unsigned.
* libgnat/s-imageb.ads, libgnat/s-imageb.adb: New generic
package.
* libgnat/s-imagei.ads, libgnat/s-imagei.adb: Likewise.
* libgnat/s-imageu.ads, libgnat/s-imageu.adb: Likewise.
* libgnat/s-imagew.ads, libgnat/s-imagew.adb: Likewise.
* libgnat/s-imgbiu.ads: Instantiate System.Image_B.
* libgnat/s-imgbiu.adb: Add pragma No_Body.
* libgnat/s-imgint.ads: Instantiate System.Image_I.
* libgnat/s-imgint.adb: Add pragma No_Body.
* libgnat/s-imgllb.ads: Instantiate System.Image_B.
* libgnat/s-imgllb.adb: Add pragma No_Body0
* libgnat/s-imglli.ads: Instantiate System.Image_I.
* libgnat/s-imglli.adb: Add pragma No_Body.
* libgnat/s-imglllb.ads: Instantiate System.Image_B.
* libgnat/s-imgllli.ads: Instantiate System.Image_I.
* libgnat/s-imglllu.ads: Instantiate System.Image_U.
* libgnat/s-imglllw.ads: Instantiate System.Image_W.
* libgnat/s-imgllu.ads: Instantiate System.Image_U.
* libgnat/s-imgllu.adb: Add pragma No_Body.
* libgnat/s-imgllw.ads: Instantiate System.Image_W.
* libgnat/s-imgllw.adb: Add pragma No_Body.
* libgnat/s-imgrea.adb: Remove clauses for System.Unsigned_Types.
* libgnat/s-imguns.ads: Instantiate System.Image_U.
* libgnat/s-imguns.adb: Add pragma No_Body.
* libgnat/s-imgwiu.ads: Instantiate System.Image_W.
* libgnat/s-imgwiu.adb: Add pragma No_Body.
* libgnat/s-putima.ads (Long_Long_Long_Unsigned): New subtype.
(Put_Image_Long_Long_Long_Unsigned): New procedure.
* libgnat/s-putima.adb (Small): Rename to Integer_Images.
(Large): Rename to LL_Integer_Images.
(LLL_Integer_Images): New instantiation.
(Put_Image_Long_Long_Long_Integer): New renaming.
(Put_Image_Long_Long_Long_Unsigned): Likewise.
* libgnat/s-valint.ads: Instantiate System.Value_I.
* libgnat/s-valint.adb: Add pragma No_Body.
* libgnat/s-vallli.ads: Instantiate System.Value_I.
* libgnat/s-vallli.adb: Add pragma No_Body.
* libgnat/s-valllli.ads: Instantiate System.Value_I.
* libgnat/s-vallllu.ads: Instantiate System.Value_U.
* libgnat/s-valllu.ads: Instantiate System.Value_U.
* libgnat/s-valllu.adb: Add pragma No_Body.
* libgnat/s-valuei.ads, libgnat/s-valuei.adb: New generic
package.
* libgnat/s-valueu.ads, libgnat/s-valueu.adb: Likewise.
* libgnat/s-valuns.ads: Instantiate System.Value_U.
* libgnat/s-valuns.adb: Add pragma No_Body.
* libgnat/s-widint.ads: Instantiate System.Width_I.
* libgnat/s-widlli.ads: Likewise.
* libgnat/s-widlli.adb: Add pragma No_Body.
* libgnat/s-widllli.ads: Instantiate System.Width_I.
* libgnat/s-widlllu.ads: Instantiate System.Width_U.
* libgnat/s-widllu.ads: Likewise.
* libgnat/s-widllu.adb: Add pragma No_Body.
* libgnat/s-widthi.ads, libgnat/s-widthi.adb: New generic
package.
* libgnat/s-widthu.ads, libgnat/s-widthu.adb: Likewise.
* libgnat/s-widuns.ads: Instantiate System.Width_U.
62 files changed:
gcc/ada/Makefile.rtl
gcc/ada/exp_imgv.adb
gcc/ada/exp_put_image.adb
gcc/ada/krunch.adb
gcc/ada/libgnat/s-imageb.adb [new file with mode: 0644]
gcc/ada/libgnat/s-imageb.ads [new file with mode: 0644]
gcc/ada/libgnat/s-imagei.adb [new file with mode: 0644]
gcc/ada/libgnat/s-imagei.ads [new file with mode: 0644]
gcc/ada/libgnat/s-imageu.adb [new file with mode: 0644]
gcc/ada/libgnat/s-imageu.ads [new file with mode: 0644]
gcc/ada/libgnat/s-imagew.adb [new file with mode: 0644]
gcc/ada/libgnat/s-imagew.ads [new file with mode: 0644]
gcc/ada/libgnat/s-imgbiu.adb
gcc/ada/libgnat/s-imgbiu.ads
gcc/ada/libgnat/s-imgint.adb
gcc/ada/libgnat/s-imgint.ads
gcc/ada/libgnat/s-imgllb.adb
gcc/ada/libgnat/s-imgllb.ads
gcc/ada/libgnat/s-imglli.adb
gcc/ada/libgnat/s-imglli.ads
gcc/ada/libgnat/s-imglllb.ads [new file with mode: 0644]
gcc/ada/libgnat/s-imgllli.ads [new file with mode: 0644]
gcc/ada/libgnat/s-imglllu.ads [new file with mode: 0644]
gcc/ada/libgnat/s-imglllw.ads [new file with mode: 0644]
gcc/ada/libgnat/s-imgllu.adb
gcc/ada/libgnat/s-imgllu.ads
gcc/ada/libgnat/s-imgllw.adb
gcc/ada/libgnat/s-imgllw.ads
gcc/ada/libgnat/s-imgrea.adb
gcc/ada/libgnat/s-imguns.adb
gcc/ada/libgnat/s-imguns.ads
gcc/ada/libgnat/s-imgwiu.adb
gcc/ada/libgnat/s-imgwiu.ads
gcc/ada/libgnat/s-putima.adb
gcc/ada/libgnat/s-putima.ads
gcc/ada/libgnat/s-valint.adb
gcc/ada/libgnat/s-valint.ads
gcc/ada/libgnat/s-vallli.adb
gcc/ada/libgnat/s-vallli.ads
gcc/ada/libgnat/s-valllli.ads [new file with mode: 0644]
gcc/ada/libgnat/s-vallllu.ads [new file with mode: 0644]
gcc/ada/libgnat/s-valllu.adb
gcc/ada/libgnat/s-valllu.ads
gcc/ada/libgnat/s-valuei.adb [new file with mode: 0644]
gcc/ada/libgnat/s-valuei.ads [new file with mode: 0644]
gcc/ada/libgnat/s-valueu.adb [new file with mode: 0644]
gcc/ada/libgnat/s-valueu.ads [new file with mode: 0644]
gcc/ada/libgnat/s-valuns.adb
gcc/ada/libgnat/s-valuns.ads
gcc/ada/libgnat/s-widint.ads [new file with mode: 0644]
gcc/ada/libgnat/s-widlli.adb
gcc/ada/libgnat/s-widlli.ads
gcc/ada/libgnat/s-widllli.ads [new file with mode: 0644]
gcc/ada/libgnat/s-widlllu.ads [new file with mode: 0644]
gcc/ada/libgnat/s-widllu.adb
gcc/ada/libgnat/s-widllu.ads
gcc/ada/libgnat/s-widthi.adb [new file with mode: 0644]
gcc/ada/libgnat/s-widthi.ads [new file with mode: 0644]
gcc/ada/libgnat/s-widthu.adb [new file with mode: 0644]
gcc/ada/libgnat/s-widthu.ads [new file with mode: 0644]
gcc/ada/libgnat/s-widuns.ads [new file with mode: 0644]
gcc/ada/rtsfind.ads