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

yuta tomino <demoonlit at panathenaia dot halfmoon.jp> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |demoonlit at panathenaia dot 
halfm
                   |                            |oon.jp

--- Comment #1 from yuta tomino <demoonlit at panathenaia dot halfmoon.jp> ---
Hello. I have encountered a similar case, too.

package p is
   type T (D : access constant Integer) is null record;                         
   type R is limited record
      Component : aliased Integer;
   end record;
   function F (Object : R) return T is
     (D => Object.Component'Access);
end p;

p.ads:7:12: access discriminant in return aggregate would be a dangling
reference

Inserting "aliased" between "Object :" and "R" resolves it.
However, "Object : R" is already passed by reference without aliased, because
in RM 6.2(7/3), an explicitly limited record type is a by-reference type unless
aliased.
So, it does not make a dangling reference.

Reply via email to