https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117328

            Bug ID: 117328
           Summary: Iterated component association fails for array indexed
                    by Stream_Element_Offset
           Product: gcc
           Version: 14.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
          Assignee: unassigned at gcc dot gnu.org
          Reporter: simon at pushface dot org
                CC: dkm at gcc dot gnu.org
  Target Milestone: ---

Created attachment 59469
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59469&action=edit
Reproducer

This code (which originally used Stream_Element_Array)

pragma Ada_2022;
with Ada.Streams;
with Interfaces;
procedure Gast is
   use Ada.Streams;
   type Bytes is array (Positive range <>) of Interfaces.Unsigned_8;
   X : Bytes := [16#ff#, 16#00#, 16#10#, 16#01#];
   type Integers is array (Stream_Element_Offset range <>) of Integer;
   --  type Integers is array (Integer range <>) of Integer;
   Z : Integers := [for Byte of X => Integer (Byte)];
begin
   null;
end Gast;

fails with

$ gnatmake gast.adb
gcc -c gast.adb
gast.adb:10:20: error: value not in range of type "Standard.Integer"
gast.adb:10:20: error: static expression fails Constraint_Check

but if the current declaration of type Integers is replaced by the
commented-out one below it, compilation succeeds.

Reply via email to