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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-13 branch has been updated by Eric Botcazou
<ebotca...@gcc.gnu.org>:

https://gcc.gnu.org/g:8a5fe7fc0c4aecca1fec88b7aa608745ade1b045

commit r13-7942-g8a5fe7fc0c4aecca1fec88b7aa608745ade1b045
Author: Eric Botcazou <ebotca...@adacore.com>
Date:   Tue Sep 26 22:54:12 2023 +0200

    ada: Fix infinite loop with multiple limited with clauses

    This occurs when one of the types has an incomplete declaration in addition
    to its full declaration in its package. In this case AI05-129 says that the
    incomplete type is not part of the limited view of the package, i.e. only
    the full view is. Now, in the GNAT implementation, it's the opposite in the
    regular view of the package, i.e. the incomplete type is the visible one.

    That's why the implementation needs to also swap the types on the
visibility
    chain while it is swapping the views when the clauses are either installed
    or removed. This works correctly for the installation, but does not for the
    removal, so this change rewrites the code doing the latter.

    gcc/ada/
            PR ada/111434
            * sem_ch10.adb (Replace): New procedure to replace an entity with
            another on the homonym chain.
            (Install_Limited_With_Clause): Rename Non_Lim_View to Typ for the
            sake of consistency.  Call Replace to do the replacements and split
            the code into the regular and the special cases.  Add debuggging
            output controlled by -gnatdi.
            (Install_With_Clause): Print the Parent_With and Implicit_With
flags
            in the debugging output controlled by -gnatdi.
            (Remove_Limited_With_Unit.Restore_Chain_For_Shadow (Shadow)):
Rewrite
            using a direct replacement of E4 by E2.   Call Replace to do the
            replacements.  Add debuggging output controlled by -gnatdi.
  • [Bug ada/111434] [13/14 regress... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to