On Sat, Aug 2, 2025 at 4:57 PM Sam James <s...@gentoo.org> wrote:
>
> Since r15-4719-ga9ec1bc06bd3cc, we require GCC 5.4, so a workaround for
> < GCC 4.3 is long-obsolete. Before that, we required GCC 4.8.3 too.
>
> i.e. it shouldn't be possible to build GCC with such a compiler for
> quite some time.

OK.

> gcc/ChangeLog:
>         PR libstdc++/29286
>         * Makefile.in (ALIASING_FLAGS): Drop.
>         * configure: Regenerate.
>         * configure.ac: Drop -fno-strict-aliasing workaround for < GCC 4.3.
>
> gcc/d/ChangeLog:
>
>         * Make-lang.in (ALL_DFLAGS): Don't use ALIASING_FLAGS.
> ---
> OK?
>
>  gcc/Makefile.in    |  2 --
>  gcc/configure      | 44 ++------------------------------------------
>  gcc/configure.ac   | 29 -----------------------------
>  gcc/d/Make-lang.in |  2 +-
>  4 files changed, 3 insertions(+), 74 deletions(-)
>
> diff --git a/gcc/Makefile.in b/gcc/Makefile.in
> index d7d5cbe72770..3d725641c31a 100644
> --- a/gcc/Makefile.in
> +++ b/gcc/Makefile.in
> @@ -187,8 +187,6 @@ C_STRICT_WARN = @c_strict_warn@
>
>  NOEXCEPTION_FLAGS = @noexception_flags@
>
> -ALIASING_FLAGS = @aliasing_flags@
> -
>  # This is set by --disable-maintainer-mode (default) to "#"
>  # FIXME: 'MAINT' will always be set to an empty string, no matter if
>  # --disable-maintainer-mode is used or not.  This is because the
> diff --git a/gcc/configure b/gcc/configure
> index de6976bfe7cb..9f36e7f993e1 100755
> --- a/gcc/configure
> +++ b/gcc/configure
> @@ -872,7 +872,6 @@ c_strict_warn
>  strict_warn
>  c_loose_warn
>  loose_warn
> -aliasing_flags
>  CPP
>  EGREP
>  GREP
> @@ -7126,45 +7125,6 @@ $as_echo "#define HAVE_SWAP_IN_UTILITY 1" >>confdefs.h
>
>  fi
>
> -# Check whether compiler is affected by placement new aliasing bug (PR 
> 29286).
> -# If the host compiler is affected by the bug, and we build with optimization
> -# enabled (which happens e.g. when cross-compiling), the pool allocator may
> -# get miscompiled.  Use -fno-strict-aliasing to work around this problem.
> -# Since there is no reliable feature check for the presence of this bug,
> -# we simply use a GCC version number check.  (This should never trigger for
> -# stages 2 or 3 of a native bootstrap.)
> -aliasing_flags=
> -if test "$GCC" = yes; then
> -  saved_CXXFLAGS="$CXXFLAGS"
> -
> -  # The following test compilation will succeed if and only if $CXX accepts
> -  # -fno-strict-aliasing *and* is older than GCC 4.3.
> -  CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
> -  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX is affected 
> by placement new aliasing bug" >&5
> -$as_echo_n "checking whether $CXX is affected by placement new aliasing 
> bug... " >&6; }
> -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -
> -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
> -#error compiler not affected by placement new aliasing bug
> -#endif
> -
> -_ACEOF
> -if ac_fn_cxx_try_compile "$LINENO"; then :
> -  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
> -$as_echo "yes" >&6; }; aliasing_flags='-fno-strict-aliasing'
> -else
> -  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
> -$as_echo "no" >&6; }
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -
> -  CXXFLAGS="$saved_CXXFLAGS"
> -fi
> -
> -
> -
> -
>  # ---------------------
>  # Warnings and checking
>  # ---------------------
> @@ -21522,7 +21482,7 @@ else
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<_LT_EOF
> -#line 21525 "configure"
> +#line 21485 "configure"
>  #include "confdefs.h"
>
>  #if HAVE_DLFCN_H
> @@ -21628,7 +21588,7 @@ else
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<_LT_EOF
> -#line 21631 "configure"
> +#line 21591 "configure"
>  #include "confdefs.h"
>
>  #if HAVE_DLFCN_H
> diff --git a/gcc/configure.ac b/gcc/configure.ac
> index ca440c3f2467..444d5005e1d2 100644
> --- a/gcc/configure.ac
> +++ b/gcc/configure.ac
> @@ -563,35 +563,6 @@ if test $ac_cv_std_swap_in_utility = yes; then
>    [Define if <utility> defines std::swap.])
>  fi
>
> -# Check whether compiler is affected by placement new aliasing bug (PR 
> 29286).
> -# If the host compiler is affected by the bug, and we build with optimization
> -# enabled (which happens e.g. when cross-compiling), the pool allocator may
> -# get miscompiled.  Use -fno-strict-aliasing to work around this problem.
> -# Since there is no reliable feature check for the presence of this bug,
> -# we simply use a GCC version number check.  (This should never trigger for
> -# stages 2 or 3 of a native bootstrap.)
> -aliasing_flags=
> -if test "$GCC" = yes; then
> -  saved_CXXFLAGS="$CXXFLAGS"
> -
> -  # The following test compilation will succeed if and only if $CXX accepts
> -  # -fno-strict-aliasing *and* is older than GCC 4.3.
> -  CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
> -  AC_MSG_CHECKING([whether $CXX is affected by placement new aliasing bug])
> -  AC_COMPILE_IFELSE([AC_LANG_SOURCE([
> -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
> -#error compiler not affected by placement new aliasing bug
> -#endif
> -])],
> -    [AC_MSG_RESULT([yes]); aliasing_flags='-fno-strict-aliasing'],
> -    [AC_MSG_RESULT([no])])
> -
> -  CXXFLAGS="$saved_CXXFLAGS"
> -fi
> -AC_SUBST(aliasing_flags)
> -
> -
> -
>  # ---------------------
>  # Warnings and checking
>  # ---------------------
> diff --git a/gcc/d/Make-lang.in b/gcc/d/Make-lang.in
> index 2d444c999530..0ddd5242812e 100644
> --- a/gcc/d/Make-lang.in
> +++ b/gcc/d/Make-lang.in
> @@ -61,7 +61,7 @@ WARN_DFLAGS = -Wall -Wdeprecated
>  NOEXCEPTION_DFLAGS = $(filter-out -fno-rtti, $(NOEXCEPTION_FLAGS))
>
>  ALL_DFLAGS = $(DFLAGS-$@) $(GDCFLAGS) -fversion=IN_GCC $(CHECKING_DFLAGS) \
> -       $(PICFLAG) $(ALIASING_FLAGS) $(NOEXCEPTION_DFLAGS) $(COVERAGE_FLAGS) \
> +       $(PICFLAG) $(NOEXCEPTION_DFLAGS) $(COVERAGE_FLAGS) \
>         $(WARN_DFLAGS)
>
>  DCOMPILE.base = $(GDC) -c $(ALL_DFLAGS) -o $@
> --
> 2.50.1
>

Reply via email to