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

            Bug ID: 86391
           Summary: Cannot pass array as aliased formal parameter
           Product: gcc
           Version: 6.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
          Assignee: unassigned at gcc dot gnu.org
          Reporter: laguest at archeia dot com
  Target Milestone: ---

When passing an initialised array as an aliased formal, the compiler complains:

mem.adb:13:11: untagged actual does not match aliased formal "B"

Source:

procedure Mem is
   type IA is array (Positive range <>) of Integer;

   type IA_Ptr is access all IA;

   procedure Inner (B : aliased in out IA) is null;

   --  S : aliased IA (1 .. 10) := (others => 0);       --  This does not work
for some reason??
   --  S : aliased IA (1 .. 10) := (1 .. 10 => 0);      --  This does not work
for some reason??
   --  S : aliased IA           := (1 .. 10 => 0);      --  This works.
   --  S : aliased IA           := (0, 1, 2, 3, 4, 5);  --  This works.
begin
   Inner (S);
end Mem;

Reply via email to