https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115535
Bug ID: 115535 Summary: Image attribute on arrays incorrectly prints a signed representation under certain conditions Product: gcc Version: 13.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: ada Assignee: unassigned at gcc dot gnu.org Reporter: liam at liampwll dot com CC: dkm at gcc dot gnu.org Target Milestone: --- When calling 'Image on arrays containing range 0 .. 2**32 - 1 the output does not match the output of 'Image for each element and instead outputs the value interpreted as a signed 32 bit number. GCC version: x64 13.2.0 from Alire on Linux and trunk on godbolt.org Example built with gcc -c -I/app/ -g -fdiagnostics-color=always -S -fverbose-asm -masm=intel -gnat2022 -o /app/example.s -I-: with Ada.Text_IO; use Ada.Text_IO; with System; procedure Example is type Client_ID_Part is range 0 .. 2**32 - 1 with Size => 32; type Client_ID is array (1 .. 2) of Client_ID_Part; A : Client_ID := (1479222903, 3163714999); begin Put_Line (A'Image); Put_Line (A (1)'Image); Put_Line (A (2)'Image); end Example; Actual output: [ 1479222903, -1131252297] 1479222903 3163714999 Expected output: [ 1479222903, 3163714999] 1479222903 3163714999