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

--- Comment #20 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-13 branch has been updated by Andrew Pinski
<pins...@gcc.gnu.org>:

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

commit r13-8713-gf5d9eef6507f36692066c0934d9f8c9d462e698f
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Tue Feb 20 13:38:28 2024 -0800

    c++/c-common: Fix convert_vector_to_array_for_subscript for qualified
vector types [PR89224]

    After r7-987-gf17a223de829cb, the access for the elements of a vector type
would lose the qualifiers.
    So if we had `constvector[0]`, the type of the element of the array would
not have const on it.
    This was due to a missing build_qualified_type for the inner type of the
vector when building the array type.
    We need to add back the call to build_qualified_type and now the access has
the correct qualifiers. So the
    overloads and even if it is a lvalue or rvalue is correctly done.

    Note we correctly now reject the testcase gcc.dg/pr83415.c which was
incorrectly accepted after r7-987-gf17a223de829cb.

    Built and tested for aarch64-linux-gnu.

            PR c++/89224

    gcc/c-family/ChangeLog:

            * c-common.cc (convert_vector_to_array_for_subscript): Call
build_qualified_type
            for the inner type.

    gcc/cp/ChangeLog:

            * constexpr.cc (cxx_eval_array_reference): Compare main variants
            for the vector/array types instead of the types directly.

    gcc/testsuite/ChangeLog:

            * g++.dg/torture/vector-subaccess-1.C: New test.
            * gcc.dg/pr83415.c: Change warning to error.

    Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>
    (cherry picked from commit 4421d35167b3083e0f2e4c84c91fded09a30cf22)

Reply via email to