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

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

https://gcc.gnu.org/g:94a311abf783de754f0f1b2d4c1f00a9788e795b

commit r14-918-g94a311abf783de754f0f1b2d4c1f00a9788e795b
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.

Reply via email to