From: Steve Baird <ba...@adacore.com> Predefined units do not generally support the Put_Image attribute. There are good reasons for this in most cases. But if a user-defined instantiation of a predefined generic occurs in Ada 2022 code, then Put_Image can be supported for types declared therein. Add this support.
gcc/ada/ * exp_put_image.adb (Put_Image_Enabled): Return True in more cases. In particular, when testing to see if a type occurs in a predefined unit, test the type's code unit (obtained by calling Get_Code_Unit). In the case of type within a user-defined instance of a predefined generic, Is_Predefined_Unit will return True for the type and False for the type's code unit. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/exp_put_image.adb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/ada/exp_put_image.adb b/gcc/ada/exp_put_image.adb index 6684d4178e6..a30f609cfac 100644 --- a/gcc/ada/exp_put_image.adb +++ b/gcc/ada/exp_put_image.adb @@ -1023,7 +1023,7 @@ package body Exp_Put_Image is null; elsif Is_Derived_Type (Typ) then return Put_Image_Enabled (Etype (Base_Type (Typ))); - elsif In_Predefined_Unit (Typ) then + elsif Is_Predefined_Unit (Get_Code_Unit (Typ)) then return False; end if; end if; -- 2.42.0