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

--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-16 branch has been updated by Jeff Law <[email protected]>:

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

commit r16-9774-gedec216117d563c244ebedd2e565fa286b9ab94b
Author: Robin Dapp <[email protected]>
Date:   Tue Sep 22 14:18:45 2026 +0200

    RISC-V: Error out early for unsupported builtins. [PR127553]

    Right now we only show an error if the expansion of a builtin fails.
    But there is builtin code that get optimized away before expansion and
    never shows an error message.  It's not strictly wrong code but at least
    surprising and will mislead compilation checks.

    This patch just copies the checks of expand_builtin to
    check_builtin_call.  We don't have the exact same expression of the
    affected call available at that point, though.  The basic fndecl just
    contains the function name and not its arguments.  We can reconstruct
    the call but in my tests there were always slight difference to the
    expand-time diagnostic.  Therefore I adjusted the test expectations
    instead.

            PR target/127553

    gcc/ChangeLog:

            * config/riscv/riscv-vector-builtins.cc
(validate_instance_type_required_extensions):
            Add location param for logging.
            (expand_builtin): Pass location.
            (check_builtin_call): Likewise.

    gcc/testsuite/ChangeLog:

            * gcc.target/riscv/rvv/base/bug-9.c: Adjust test expectation.
            * gcc.target/riscv/rvv/base/intrinsic_required_ext-1.c: Ditto.
            * gcc.target/riscv/rvv/base/intrinsic_required_ext-10.c: Ditto.
            * gcc.target/riscv/rvv/base/intrinsic_required_ext-2.c: Ditto.
            * gcc.target/riscv/rvv/base/intrinsic_required_ext-3.c: Ditto.
            * gcc.target/riscv/rvv/base/intrinsic_required_ext-4.c: Ditto.
            * gcc.target/riscv/rvv/base/intrinsic_required_ext-5.c: Ditto.
            * gcc.target/riscv/rvv/base/intrinsic_required_ext-6.c: Ditto.
            * gcc.target/riscv/rvv/base/intrinsic_required_ext-7.c: Ditto.
            * gcc.target/riscv/rvv/base/intrinsic_required_ext-8.c: Ditto.
            * gcc.target/riscv/rvv/base/intrinsic_required_ext-9.c: Ditto.
            * gcc.target/riscv/rvv/base/pr114988-1.c: Ditto.
            * gcc.target/riscv/rvv/base/pr114988-2.c: Ditto.
            * gcc.target/riscv/rvv/base/pr120436.c: Ditto.
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-17.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-18.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-19.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-20.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-21.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-22.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-23.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-24.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-25.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-26.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-27.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-28.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-29.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-3.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-7.c:
            * gcc.target/riscv/rvv/base/target_attribute_v_with_intrinsic-8.c:
            * gcc.target/riscv/pr127553.c: New test.

    (cherry picked from commit 2b980c3e11a6b6ef0223d1668672bac877038185)

Reply via email to