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

--- Comment #19 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Kewen Lin <li...@gcc.gnu.org>:

https://gcc.gnu.org/g:a5c37786ac61ca41c5a227362568cfa3be7866d9

commit r11-10452-ga5c37786ac61ca41c5a227362568cfa3be7866d9
Author: Kewen Lin <li...@linux.ibm.com>
Date:   Wed Jan 4 23:31:45 2023 -0600

    rs6000: Raise error for __vector_{quad,pair} uses without MMA enabled
[PR106736]

    As PR106736 shows, it's unexpected to use __vector_quad and
    __vector_pair types without MMA support, it would cause ICE
    when expanding the corresponding assignment.  We can't guard
    these built-in types registering under MMA support as Peter
    pointed out in that PR, because the registering is global,
    it doesn't work for target pragma/attribute support with MMA
    enabled.  The existing verify_type_context mentioned in [2]
    can help to make the diagnostics invalid built-in type uses
    better, but as Richard pointed out in [4], it can't deal with
    all cases.  As the discussions in [1][3], this patch is to
    check the invalid use of built-in types __vector_quad and
    __vector_pair in mov pattern of OOmode and XOmode, on the
    currently being expanded gimple assignment statement.  It
    still puts an assertion in else arm rather than just makes
    it go through, it's to ensure we can catch any other possible
    unexpected cases in time if there are.

    [1] https://gcc.gnu.org/pipermail/gcc/2022-December/240218.html
    [2] https://gcc.gnu.org/pipermail/gcc/2022-December/240220.html
    [3] https://gcc.gnu.org/pipermail/gcc/2022-December/240223.html
    [4] https://gcc.gnu.org/pipermail/gcc-patches/2022-December/608083.html

            PR target/106736

    gcc/ChangeLog:

            * config/rs6000/mma.md (define_expand movoo): Call function
            rs6000_opaque_type_invalid_use_p to check and emit error message
for
            the invalid use of opaque type.
            (define_expand movxo): Likewise.
            * config/rs6000/rs6000-protos.h
            (rs6000_opaque_type_invalid_use_p): New function declaration.
            (currently_expanding_gimple_stmt): New extern declaration.
            * config/rs6000/rs6000.c (rs6000_opaque_type_invalid_use_p): New
            function.

    gcc/testsuite/ChangeLog:

            * gcc.target/powerpc/pr106736-1.c: New test.
            * gcc.target/powerpc/pr106736-2.c: Likewise.
            * gcc.target/powerpc/pr106736-3.c: Likewise.
            * gcc.target/powerpc/pr106736-4.c: Likewise.
            * gcc.target/powerpc/pr106736-5.c: Likewise.

Reply via email to