[Bug bootstrap/100246] [11/12 Regression] GCC will not bootstrap with clang 3.4/3.5 [xcode 5/6, Darwin 12/13]

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Nov 5 15:59:36 GMT 2021


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

--- Comment #11 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:858d7ee1a0cd97c01d844ea73ab81918da738344

commit r12-4944-g858d7ee1a0cd97c01d844ea73ab81918da738344
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Nov 5 16:39:14 2021 +0100

    x86: Make stringop_algs::stringop_strategy ctor constexpr [PR100246]

    > Several older compilers fail to build modern GCC because of missing
    > or incomplete C++11 support.
    >
    >       * config/i386/i386.h (struct stringop_algs): Define a CTOR for
    >       this type.

    Unfortunately, as mentioned in my
    https://gcc.gnu.org/pipermail/gcc-patches/2021-November/583289.html
    mail, without the new dyninit pass this causes dynamic initialization of
    many variables, 6.5KB _GLOBAL__sub_I_* on x86_64 and 12.5KB on i686.

    The following patch makes the ctor constexpr so that already the FE
    is able to statically initialize all those.

    I have tested on godbolt a reduced testcase without a constructor,
    with constructor and with constexpr constructor.
    clang before 3.3 is unhappy about all the 3 cases, clang 3.3 and 3.4
    is ok with ctor and ctor with constexpr and optimizes it into static
    initialization, clang 3.5+ is ok with all 3 versions and optimizes,
    gcc 4.8 and 5+ is ok with all 3 versions and no ctor and ctor with
constexpr
    is optimized, gcc 4.9 is unhappy about the no ctor case and happy with the
    other two.

    2021-11-05  Jakub Jelinek  <jakub@redhat.com>

            PR bootstrap/100246
            * config/i386/i386.h
            (stringop_algs::stringop_strategy::stringop_strategy): Make the
ctor
            constexpr.


More information about the Gcc-bugs mailing list