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

--- Comment #5 from GCC 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:275de3505e6c5b81bb8060acc5194dac8f5732b5

commit r13-8203-g275de3505e6c5b81bb8060acc5194dac8f5732b5
Author: Eric Botcazou <ebotca...@adacore.com>
Date:   Tue Jan 9 10:46:23 2024 +0100

    Fix internal error on function call returning extension of limited
interface

    This is a regression present on the mainline and 13 branch, in the form of
a
    series of internal errors (3) on a function call returning the extension of
    a limited interface.

    This is only a partial fix for the first two assertion failures; the third
    one is the most problematic and will be dealt with separately.

    The first issue is in Instantiate_Type, where we use Base_Type in a
specific
    case to compute the ancestor of a derived type, which will later trigger
the
    assertion on line 16960 of sem_ch3.adb since Parent_Base and Generic_Actual
    are the same node.  This is changed to use Etype like in other cases
around.

    The second issue is an unprotected use of Designated_Type on type T in
    Analyze_Explicit_Dereference, while another use in an equivalent context
    is guarded by Is_Access_Type a few lines above.

    gcc/ada
            PR ada/112781
            * sem_ch12.adb (Instantiate_Type): Use Etype instead of Base_Type
            consistently to retrieve the ancestor for a derived type.
            * sem_ch4.adb (Analyze_Explicit_Dereference): Test Is_Access_Type
            consistently before accessing Designated_Type.

Reply via email to