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

--- Comment #11 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-10 branch has been updated by Alex Coplan
<acop...@gcc.gnu.org>:

https://gcc.gnu.org/g:34a9bc1f95027eea1560369765b8b2b5722b6779

commit r10-9747-g34a9bc1f95027eea1560369765b8b2b5722b6779
Author: Alex Coplan <alex.cop...@arm.com>
Date:   Thu Apr 22 14:37:12 2021 +0100

    aarch64: Fix SVE ACLE builtins with LTO [PR99216]

    This is a GCC 10 backport of the fix for PR99216
    (e4005cf8717abe8c949f840c707e02e6c394c2e7). The only change w.r.t the
    original patch is a bump of lto-streamer.h:LTO_minor_version.

    As discussed in the PR, we currently have two different numbering
    schemes for SVE builtins: one for C, and one for C++. This is
    problematic for LTO, where we end up getting confused about which
    intrinsic we're talking about. This patch inserts placeholders into the
    registered_functions vector to ensure that there is a consistent
    numbering scheme for both C and C++.

    This version uses integer_zero_node as a placeholder node instead of
    building a function decl. This is safe because the node is only returned
    by the TARGET_BUILTIN_DECL hook, which (on AArch64) is only used for
    validation when builtin decls are streamed into lto1.

    gcc/ChangeLog:

            PR target/99216
            * config/aarch64/aarch64-sve-builtins.cc
            (function_builder::add_function): Add placeholder_p argument, use
            placeholder decls if this is set.
            (function_builder::add_unique_function): Instead of conditionally
adding
            direct overloads, unconditionally add either a direct overload or a
            placeholder.
            (function_builder::add_overloaded_function): Set placeholder_p if
we're
            using C++ overloads. Use the obstack for string storage instead
            of relying on the tree nodes.
            (function_builder::add_overloaded_functions): Don't return early
for
            m_direct_overloads: we need to add placeholders.
            * config/aarch64/aarch64-sve-builtins.h
            (function_builder::add_function): Add placeholder_p argument.
            * lto-streamer.h (LTO_minor_version): Bump.

    gcc/testsuite/ChangeLog:

            PR target/99216
            * g++.target/aarch64/sve/pr99216.C: New test.
  • [Bug target/99216] ICE in aarch... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to