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

--- Comment #17 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-13 branch has been updated by Jonathan Wakely
<r...@gcc.gnu.org>:

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

commit r13-7509-gdbd4acd72274f3b3d542ebf68f9962eda8f8b769
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue May 16 15:09:20 2023 +0100

    libstdc++: Disable cacheline alignment for DJGPP [PR109741]

    DJGPP (and maybe other targets) uses MAX_OFILE_ALIGNMENT=16 which means
    that globals (and static objects) can't have alignment greater than 16.
    This causes an error for the locks defined in src/c++11/shared_ptr.cc
    because we try to align them to the cacheline size, to avoid false
    sharing.

    Add a configure check for the increased alignment, and live with false
    sharing where we can't increase the alignment.

    libstdc++-v3/ChangeLog:

            PR libstdc++/109741
            * acinclude.m4 (GLIBCXX_CHECK_ALIGNAS_CACHELINE): Define.
            * config.h.in: Regenerate.
            * configure: Regenerate.
            * configure.ac: Use GLIBCXX_CHECK_ALIGNAS_CACHELINE.
            * src/c++11/shared_ptr.cc (__gnu_internal::get_mutex): Do not
            align lock table if not supported. use __GCC_DESTRUCTIVE_SIZE
            instead of hardcoded 64.

    (cherry picked from commit 94a311abf783de754f0f1b2d4c1f00a9788e795b)

Reply via email to