Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gcc16 for openSUSE:Factory checked in at 2026-09-04 12:37:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gcc16 (Old) and /work/SRC/openSUSE:Factory/.gcc16.new.1265 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gcc16" Fri Sep 4 12:37:53 2026 rev:11 rq:1375370 version:16.2.0+git9497 Changes: -------- --- /work/SRC/openSUSE:Factory/gcc16/gcc16.changes 2026-08-14 22:04:53.324521931 +0200 +++ /work/SRC/openSUSE:Factory/.gcc16.new.1265/gcc16.changes 2026-09-04 12:38:31.612615694 +0200 @@ -1,0 +2,15 @@ +Wed Sep 2 11:50:38 UTC 2026 - Richard Biener <[email protected]> + +- Add gcc16-pr124811.patch to fix build reproducability when PCH + is used +- Add gcc16-znver6-cpuid.patch to fix auto-detection of Zen6 + [bsc#1277919] + +------------------------------------------------------------------- +Mon Aug 31 12:30:08 UTC 2026 - Richard Biener <[email protected]> + +- Remove support for s390, make sure to configure s390x with + --disable-multilib to avoid configury error without explicit + disable of multilibs. Support for s390 is officially deprecated. + +------------------------------------------------------------------- New: ---- gcc16-pr124811.patch gcc16-znver6-cpuid.patch ----------(New B)---------- New: - Add gcc16-pr124811.patch to fix build reproducability when PCH is used New: is used - Add gcc16-znver6-cpuid.patch to fix auto-detection of Zen6 [bsc#1277919] ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cross-aarch64-gcc16-bootstrap.spec ++++++ --- /var/tmp/diff_new_pack.6iOZhB/_old 2026-09-04 12:38:33.428679490 +0200 +++ /var/tmp/diff_new_pack.6iOZhB/_new 2026-09-04 12:38:33.430679560 +0200 @@ -99,7 +99,7 @@ %endif Name: %{pkgname} -%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 +%define biarch_targets x86_64 powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ Version: 16.2.0+git9497 @@ -130,6 +130,9 @@ # Some patches taken from Debian Patch60: gcc44-textdomain.patch Patch61: gcc44-rename-info-files.patch +# Patches picked from upstream branch +Patch100: gcc16-pr124811.patch +Patch101: gcc16-znver6-cpuid.patch # Define the canonical target and host architecture # %%gcc_target_arch is supposed to be the full target triple @@ -336,6 +339,7 @@ %patch -p1 -P 22 %patch -P 51 %patch -p1 -P 60 -P 61 +%patch -p1 -P 100 -P 101 #test patching end @@ -367,7 +371,7 @@ # default compiler settings now. -mcpu=i?86|-march=i?86|-mtune=i?86) ;; %endif -%ifarch s390 s390x +%ifarch s390x -fsigned-char) ;; -O1) add_flag=-O2 ;; %endif @@ -556,7 +560,7 @@ %endif %endif --enable-linux-futex \ -%ifarch %ix86 x86_64 ppc ppc64 ppc64le %arm aarch64 s390 s390x %sparc +%ifarch %ix86 x86_64 ppc ppc64 ppc64le %arm aarch64 s390x %sparc --enable-gnu-indirect-function \ %endif %ifarch %{disable_multilib_arch} @@ -728,7 +732,7 @@ %endif --with-tune=generic \ %endif -%if "%{TARGET_ARCH}" == "s390" || "%{TARGET_ARCH}" == "s390x" +%if "%{TARGET_ARCH}" == "s390x" %if %{suse_version} >= 1600 && !0%{?is_opensuse} --with-tune=z15 --with-arch=z14 \ %else cross-aarch64-gcc16.spec: same change cross-amdgcn-gcc16.spec: same change cross-arm-gcc16.spec: same change cross-arm-none-gcc16-bootstrap.spec: same change cross-arm-none-gcc16.spec: same change cross-avr-gcc16-bootstrap.spec: same change cross-avr-gcc16.spec: same change cross-bpf-gcc16.spec: same change cross-hppa-gcc16-bootstrap.spec: same change cross-hppa-gcc16.spec: same change cross-loongarch64-gcc16-bootstrap.spec: same change cross-loongarch64-gcc16.spec: same change cross-nvptx-gcc16.spec: same change cross-ppc64-gcc16.spec: same change cross-ppc64le-gcc16-bootstrap.spec: same change cross-ppc64le-gcc16.spec: same change cross-pru-gcc16-bootstrap.spec: same change cross-pru-gcc16.spec: same change cross-riscv64-elf-gcc16-bootstrap.spec: same change cross-riscv64-elf-gcc16.spec: same change cross-riscv64-gcc16-bootstrap.spec: same change cross-riscv64-gcc16.spec: same change cross-rx-gcc16-bootstrap.spec: same change cross-rx-gcc16.spec: same change cross-s390x-gcc16-bootstrap.spec: same change cross-s390x-gcc16.spec: same change cross-x86_64-gcc16-bootstrap.spec: same change cross-x86_64-gcc16.spec: same change ++++++ gcc16-testresults.spec ++++++ --- /var/tmp/diff_new_pack.6iOZhB/_old 2026-09-04 12:38:34.572719678 +0200 +++ /var/tmp/diff_new_pack.6iOZhB/_new 2026-09-04 12:38:34.574719749 +0200 @@ -54,9 +54,9 @@ # Ada currently fails to build on a few platforms, enable it only # on those that work %if %{suse_version} >= 1330 -%define ada_arch %ix86 x86_64 ppc ppc64 ppc64le s390 s390x ia64 aarch64 riscv64 +%define ada_arch %ix86 x86_64 ppc ppc64 ppc64le s390x ia64 aarch64 riscv64 %else -%define ada_arch %ix86 x86_64 ppc ppc64 s390 ia64 +%define ada_arch %ix86 x86_64 ppc ppc64 ia64 %endif %ifarch %ada_arch @@ -66,13 +66,13 @@ %endif %define quadmath_arch %ix86 x86_64 ia64 ppc64le -%define tsan_arch x86_64 aarch64 ppc ppc64 ppc64le s390 s390x riscv64 loongarch64 -%define asan_arch x86_64 %ix86 ppc ppc64 ppc64le s390 s390x %sparc %arm aarch64 riscv64 loongarch64 +%define tsan_arch x86_64 aarch64 ppc ppc64 ppc64le s390x riscv64 loongarch64 +%define asan_arch x86_64 %ix86 ppc ppc64 ppc64le s390x %sparc %arm aarch64 riscv64 loongarch64 %define hwasan_arch aarch64 x86_64 -%define itm_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le riscv64 s390 s390x %sparc loongarch64 -%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k ia64 riscv64 loongarch64 -%define lsan_arch x86_64 aarch64 ppc ppc64 ppc64le s390 s390x riscv64 loongarch64 -%define ubsan_arch x86_64 %ix86 ppc ppc64 ppc64le s390 s390x %arm aarch64 riscv64 loongarch64 +%define itm_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le riscv64 s390x %sparc loongarch64 +%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390x %sparc m68k ia64 riscv64 loongarch64 +%define lsan_arch x86_64 aarch64 ppc ppc64 ppc64le s390x riscv64 loongarch64 +%define ubsan_arch x86_64 %ix86 ppc ppc64 ppc64le s390x %arm aarch64 riscv64 loongarch64 %if 0%{?build_libvtv:1} %define vtv_arch x86_64 %ix86 %endif @@ -242,7 +242,7 @@ # libFOO-devel package suffix %define libdevel_suffix -gcc16 -%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 +%define biarch_targets x86_64 powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ Version: 16.2.0+git9497 @@ -337,10 +337,10 @@ %ifarch ppc sparcv9 %define separate_bi64 1 %endif -%ifarch x86_64 s390x ppc64 sparc64 +%ifarch x86_64 ppc64 sparc64 %define separate_bi32 1 %endif -%define disable_multilib_arch %{nil} +%define disable_multilib_arch s390x %else %define disable_multilib_arch ppc sparcv9 x86_64 s390x ppc64 sparc64 %endif @@ -423,6 +423,9 @@ # Some patches taken from Debian Patch60: gcc44-textdomain.patch Patch61: gcc44-rename-info-files.patch +# Patches picked from upstream branch +Patch100: gcc16-pr124811.patch +Patch101: gcc16-znver6-cpuid.patch Summary: Testsuite results License: LicenseRef-SUSE-Public-Domain @@ -553,6 +556,7 @@ %patch -p1 -P 22 %patch -P 51 %patch -p1 -P 60 -P 61 +%patch -p1 -P 100 -P 101 #test patching end @@ -584,7 +588,7 @@ # default compiler settings now. -mcpu=i?86|-march=i?86|-mtune=i?86) ;; %endif -%ifarch s390 s390x +%ifarch s390x -fsigned-char) ;; -O1) add_flag=-O2 ;; %endif @@ -773,7 +777,7 @@ %endif %endif --enable-linux-futex \ -%ifarch %ix86 x86_64 ppc ppc64 ppc64le %arm aarch64 s390 s390x %sparc +%ifarch %ix86 x86_64 ppc ppc64 ppc64le %arm aarch64 s390x %sparc --enable-gnu-indirect-function \ %endif %ifarch %{disable_multilib_arch} @@ -945,7 +949,7 @@ %endif --with-tune=generic \ %endif -%if "%{TARGET_ARCH}" == "s390" || "%{TARGET_ARCH}" == "s390x" +%if "%{TARGET_ARCH}" == "s390x" %if %{suse_version} >= 1600 && !0%{?is_opensuse} --with-tune=z15 --with-arch=z14 \ %else ++++++ gcc16.spec ++++++ --- /var/tmp/diff_new_pack.6iOZhB/_old 2026-09-04 12:38:34.629721681 +0200 +++ /var/tmp/diff_new_pack.6iOZhB/_new 2026-09-04 12:38:34.632721786 +0200 @@ -33,9 +33,9 @@ # Ada currently fails to build on a few platforms, enable it only # on those that work %if %{suse_version} >= 1330 -%define ada_arch %ix86 x86_64 ppc ppc64 ppc64le s390 s390x ia64 aarch64 riscv64 +%define ada_arch %ix86 x86_64 ppc ppc64 ppc64le s390x ia64 aarch64 riscv64 %else -%define ada_arch %ix86 x86_64 ppc ppc64 s390 ia64 +%define ada_arch %ix86 x86_64 ppc ppc64 ia64 %endif %ifarch %ada_arch @@ -45,13 +45,13 @@ %endif %define quadmath_arch %ix86 x86_64 ia64 ppc64le -%define tsan_arch x86_64 aarch64 ppc ppc64 ppc64le s390 s390x riscv64 loongarch64 -%define asan_arch x86_64 %ix86 ppc ppc64 ppc64le s390 s390x %sparc %arm aarch64 riscv64 loongarch64 +%define tsan_arch x86_64 aarch64 ppc ppc64 ppc64le s390x riscv64 loongarch64 +%define asan_arch x86_64 %ix86 ppc ppc64 ppc64le s390x %sparc %arm aarch64 riscv64 loongarch64 %define hwasan_arch aarch64 x86_64 -%define itm_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le riscv64 s390 s390x %sparc loongarch64 -%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k ia64 riscv64 loongarch64 -%define lsan_arch x86_64 aarch64 ppc ppc64 ppc64le s390 s390x riscv64 loongarch64 -%define ubsan_arch x86_64 %ix86 ppc ppc64 ppc64le s390 s390x %arm aarch64 riscv64 loongarch64 +%define itm_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le riscv64 s390x %sparc loongarch64 +%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390x %sparc m68k ia64 riscv64 loongarch64 +%define lsan_arch x86_64 aarch64 ppc ppc64 ppc64le s390x riscv64 loongarch64 +%define ubsan_arch x86_64 %ix86 ppc ppc64 ppc64le s390x %arm aarch64 riscv64 loongarch64 %if 0%{?build_libvtv:1} %define vtv_arch x86_64 %ix86 %endif @@ -221,7 +221,7 @@ # libFOO-devel package suffix %define libdevel_suffix -gcc16 -%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 +%define biarch_targets x86_64 powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ Version: 16.2.0+git9497 @@ -316,10 +316,10 @@ %ifarch ppc sparcv9 %define separate_bi64 1 %endif -%ifarch x86_64 s390x ppc64 sparc64 +%ifarch x86_64 ppc64 sparc64 %define separate_bi32 1 %endif -%define disable_multilib_arch %{nil} +%define disable_multilib_arch s390x %else %define disable_multilib_arch ppc sparcv9 x86_64 s390x ppc64 sparc64 %endif @@ -402,6 +402,9 @@ # Some patches taken from Debian Patch60: gcc44-textdomain.patch Patch61: gcc44-rename-info-files.patch +# Patches picked from upstream branch +Patch100: gcc16-pr124811.patch +Patch101: gcc16-znver6-cpuid.patch License: GPL-3.0-or-later Summary: The GNU C Compiler and Support Files @@ -2573,6 +2576,7 @@ %patch -p1 -P 22 %patch -P 51 %patch -p1 -P 60 -P 61 +%patch -p1 -P 100 -P 101 #test patching end @@ -2604,7 +2608,7 @@ # default compiler settings now. -mcpu=i?86|-march=i?86|-mtune=i?86) ;; %endif -%ifarch s390 s390x +%ifarch s390x -fsigned-char) ;; -O1) add_flag=-O2 ;; %endif @@ -2793,7 +2797,7 @@ %endif %endif --enable-linux-futex \ -%ifarch %ix86 x86_64 ppc ppc64 ppc64le %arm aarch64 s390 s390x %sparc +%ifarch %ix86 x86_64 ppc ppc64 ppc64le %arm aarch64 s390x %sparc --enable-gnu-indirect-function \ %endif %ifarch %{disable_multilib_arch} @@ -2965,7 +2969,7 @@ %endif --with-tune=generic \ %endif -%if "%{TARGET_ARCH}" == "s390" || "%{TARGET_ARCH}" == "s390x" +%if "%{TARGET_ARCH}" == "s390x" %if %{suse_version} >= 1600 && !0%{?is_opensuse} --with-tune=z15 --with-arch=z14 \ %else @@ -3567,7 +3571,7 @@ %{libsubdir}/include/nmmintrin.h %{libsubdir}/include/x86gprintrin.h %endif -%ifarch s390 s390x +%ifarch s390x %{libsubdir}/include/htmintrin.h %{libsubdir}/include/htmxlintrin.h %{libsubdir}/include/s390intrin.h ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.6iOZhB/_old 2026-09-04 12:38:34.763726388 +0200 +++ /var/tmp/diff_new_pack.6iOZhB/_new 2026-09-04 12:38:34.767726529 +0200 @@ -1,5 +1,5 @@ -mtime: 1786544707 -commit: f89f1da4e62e72a1ff3a0e286a58ed688e42b86406afddf25037c781731b80fc +mtime: 1788349939 +commit: 2d836e3af5d06bd1e505c60cc4b860eb30295a721739db676e3623506aee5e4c url: https://src.opensuse.org/gcc/gcc16.git revision: main ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-09-02 13:52:19.000000000 +0200 @@ -0,0 +1,4 @@ +*.obscpio +*.osc +_build.* +.pbuild diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre_checkin.sh new/pre_checkin.sh --- old/pre_checkin.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/pre_checkin.sh 2026-09-02 13:52:19.000000000 +0200 @@ -0,0 +1,31 @@ +#!/bin/bash +# This script is called automatically during autobuild checkin. + +case $0 in + \./*) + here=$PWD + ;; + */*) + here=${0%/*} + ;; + *) + here=$PWD + ;; +esac +case ${here##*/} in + gcc*.*) + # Handle maintainance projects with .$REPO suffix + suffix=${here##*/} + suffix=${suffix%%\.*} + set ${suffix#gcc} + ;; + gcc-*) + suffix=${here##*/} + set ${suffix#*-}- + ;; + gcc[0-9]*) + suffix=${here##*/} + set ${suffix#gcc} + ;; +esac +. ${here}/change_spec ++++++ gcc.spec.in ++++++ --- /var/tmp/diff_new_pack.6iOZhB/_old 2026-09-04 12:38:35.148739914 +0200 +++ /var/tmp/diff_new_pack.6iOZhB/_new 2026-09-04 12:38:35.153740089 +0200 @@ -34,9 +34,9 @@ # Ada currently fails to build on a few platforms, enable it only # on those that work %if %{suse_version} >= 1330 -%define ada_arch %ix86 x86_64 ppc ppc64 ppc64le s390 s390x ia64 aarch64 riscv64 +%define ada_arch %ix86 x86_64 ppc ppc64 ppc64le s390x ia64 aarch64 riscv64 %else -%define ada_arch %ix86 x86_64 ppc ppc64 s390 ia64 +%define ada_arch %ix86 x86_64 ppc ppc64 ia64 %endif %ifarch %ada_arch @@ -46,13 +46,13 @@ %endif %define quadmath_arch %ix86 x86_64 ia64 ppc64le -%define tsan_arch x86_64 aarch64 ppc ppc64 ppc64le s390 s390x riscv64 loongarch64 -%define asan_arch x86_64 %ix86 ppc ppc64 ppc64le s390 s390x %sparc %arm aarch64 riscv64 loongarch64 +%define tsan_arch x86_64 aarch64 ppc ppc64 ppc64le s390x riscv64 loongarch64 +%define asan_arch x86_64 %ix86 ppc ppc64 ppc64le s390x %sparc %arm aarch64 riscv64 loongarch64 %define hwasan_arch aarch64 x86_64 -%define itm_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le riscv64 s390 s390x %sparc loongarch64 -%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390 s390x %sparc m68k ia64 riscv64 loongarch64 -%define lsan_arch x86_64 aarch64 ppc ppc64 ppc64le s390 s390x riscv64 loongarch64 -%define ubsan_arch x86_64 %ix86 ppc ppc64 ppc64le s390 s390x %arm aarch64 riscv64 loongarch64 +%define itm_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le riscv64 s390x %sparc loongarch64 +%define atomic_arch x86_64 %ix86 %arm aarch64 ppc ppc64 ppc64le s390x %sparc m68k ia64 riscv64 loongarch64 +%define lsan_arch x86_64 aarch64 ppc ppc64 ppc64le s390x riscv64 loongarch64 +%define ubsan_arch x86_64 %ix86 ppc ppc64 ppc64le s390x %arm aarch64 riscv64 loongarch64 %if 0%{?build_libvtv:1} %define vtv_arch x86_64 %ix86 %endif @@ -225,7 +225,7 @@ # SRC-COMMON-BEGIN -%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 +%define biarch_targets x86_64 powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ Version: @[email protected] @@ -321,10 +321,10 @@ %ifarch ppc sparcv9 %define separate_bi64 1 %endif -%ifarch x86_64 s390x ppc64 sparc64 +%ifarch x86_64 ppc64 sparc64 %define separate_bi32 1 %endif -%define disable_multilib_arch %{nil} +%define disable_multilib_arch s390x %else %define disable_multilib_arch ppc sparcv9 x86_64 s390x ppc64 sparc64 %endif @@ -407,6 +407,9 @@ # Some patches taken from Debian Patch60: gcc44-textdomain.patch Patch61: gcc44-rename-info-files.patch +# Patches picked from upstream branch +Patch100: gcc16-pr124811.patch +Patch101: gcc16-znver6-cpuid.patch # GCC-TESTSUITE-DELETE-BEGIN # SRC-COMMON-END @@ -1442,6 +1445,7 @@ %patch -p1 -P 22 %patch -P 51 %patch -p1 -P 60 -P 61 +%patch -p1 -P 100 -P 101 #test patching end @@ -1473,7 +1477,7 @@ # default compiler settings now. -mcpu=i?86|-march=i?86|-mtune=i?86) ;; %endif -%ifarch s390 s390x +%ifarch s390x -fsigned-char) ;; -O1) add_flag=-O2 ;; %endif @@ -1662,7 +1666,7 @@ %endif %endif --enable-linux-futex \ -%ifarch %ix86 x86_64 ppc ppc64 ppc64le %arm aarch64 s390 s390x %sparc +%ifarch %ix86 x86_64 ppc ppc64 ppc64le %arm aarch64 s390x %sparc --enable-gnu-indirect-function \ %endif %ifarch %{disable_multilib_arch} @@ -1834,7 +1838,7 @@ %endif --with-tune=generic \ %endif -%if "%{TARGET_ARCH}" == "s390" || "%{TARGET_ARCH}" == "s390x" +%if "%{TARGET_ARCH}" == "s390x" %if %{suse_version} >= 1600 && !0%{?is_opensuse} --with-tune=z15 --with-arch=z14 \ %else @@ -2442,7 +2446,7 @@ %{libsubdir}/include/nmmintrin.h %{libsubdir}/include/x86gprintrin.h %endif -%ifarch s390 s390x +%ifarch s390x %{libsubdir}/include/htmintrin.h %{libsubdir}/include/htmxlintrin.h %{libsubdir}/include/s390intrin.h ++++++ gcc16-pr124811.patch ++++++ >From 5e8bef95e4b4e3fc3fbf180405e26f9b3bdfe738 Mon Sep 17 00:00:00 2001 From: Richard Biener <[email protected]> Date: Wed, 12 Aug 2026 15:58:39 -0400 Subject: [PATCH] c++: do not hash TYPENAME_TYPEs on pointers [PR124811] To: [email protected] From: Patrick Palka <[email protected]> typename_htab is written to a precompiled header. A hash table is streamed out slot array and all: gt_pch_nx() relocates the pointers inside the entries but leaves every entry in the slot it happened to occupy. typename_hasher hashed on the addresses of the scope and the fullname, so the slots were chosen from addresses that ASLR randomises in the process writing the header, and they no longer correspond to the hash of anything once the header has been read back at a different address. Lookups then find a restored TYPENAME_TYPE only when it happens to lie on the probe sequence of the slot the new hash points at, so most miss and build a duplicate, and which ones miss depends on the layout the writing process had. That makes a compile using a PCH differ from the same compile without one, and differ from itself between runs: the duplicates consume DECL_UIDs, every later DECL_UID shifts, and var-tracking hashes on DECL_UID, so .debug_loclists comes out different. Hash on TYPE_UID instead, which the header preserves, and use iterative_hash_template_arg to properly hash fullname which can be an arbitrary TEMPLATE_ID_EXPR. (It's important to hash the fullname instead of just the name for sake of the PR c++/65328 compile-time-hog testcase.) PR c++/124811 gcc/cp/ChangeLog: * decl.cc (typename_hasher::hash): Instead of pointer hashing, hash TYPE_HASH of context and use iterative_hash_template_arg to hash fullname. Co-authored-by: Bernhard M. Wiedemann <[email protected]> Reviewed-by: Jason Merrill <[email protected]> (cherry picked from commit cc08be7bf549072bf3699a57d3d37222e8c1087d) --- gcc/cp/decl.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc index 095cef2f2e5..d6164fead61 100644 --- a/gcc/cp/decl.cc +++ b/gcc/cp/decl.cc @@ -4925,8 +4925,12 @@ struct typename_hasher : ggc_ptr_hash<tree_node> hash (tree context, tree fullname) { hashval_t hash = 0; - hash = iterative_hash_object (context, hash); - hash = iterative_hash_object (fullname, hash); + hash = iterative_hash_hashval_t (TYPE_HASH (context), hash); + /* FULLNAME could be a template-id, so use iterative_hash_template_arg here. + And might as well set comparing_specializations for stronger hashing. */ + ++comparing_specializations; + hash = iterative_hash_template_arg (fullname, hash); + --comparing_specializations; return hash; } -- 2.51.0 ++++++ gcc16-znver6-cpuid.patch ++++++ >From 28bb548c8b87b4cf80c7df18c8de1950bed53222 Mon Sep 17 00:00:00 2001 From: Richard Biener <[email protected]> Date: Tue, 25 Aug 2026 13:54:55 +0530 Subject: [PATCH] Fix zen6 AVX512BMM cpuid check. To: [email protected] From: Dipesh Sharma <[email protected]> - Moved bit_AVX512BMM to extended features section. - Added test for __builtin_cpu_supports ("avx512bmm") compile and runtime tests. gcc/ChangeLog: * common/config/i386/cpuinfo.h (get_available_features): Detect AVX512BMM from extended features instead of standard leaf. * config/i386/cpuid.h (bit_AVX512BMM): Move to extended features section. gcc/testsuite/ChangeLog: * gcc.target/i386/avx512bmm-check-1.c: New test. * gcc.target/i386/avx512bmm-check-2.c: New test. * gcc.target/i386/avx512bmm-check-3.c: New test. (cherry picked from commit 33053605189f2b903b1a0d730a1feec166e89735) --- gcc/common/config/i386/cpuinfo.h | 16 +++------------ gcc/config/i386/cpuid.h | 4 +--- .../gcc.target/i386/avx512bmm-check-1.c | 6 ++++++ .../gcc.target/i386/avx512bmm-check-2.c | 20 +++++++++++++++++++ .../gcc.target/i386/avx512bmm-check-3.c | 6 ++++++ 5 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/avx512bmm-check-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512bmm-check-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512bmm-check-3.c diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h index f59090c8cde..e07d01991ca 100644 --- a/gcc/common/config/i386/cpuinfo.h +++ b/gcc/common/config/i386/cpuinfo.h @@ -1112,16 +1112,6 @@ get_available_features (struct __processor_model *cpu_model, } } - /* Get Advanced Features at level 0x21 (eax = 0x21). */ - if (max_cpuid_level >= 0x21) - { - __cpuid (0x21, eax, ebx, ecx, edx); - if (eax & bit_AVX512BMM) - { - set_feature (FEATURE_AVX512BMM); - } - } - /* Get Advanced Features at level 0x24 (eax = 0x24, ecx = 0). */ if (avx10_set && max_cpuid_level >= 0x24) { @@ -1196,9 +1186,9 @@ get_available_features (struct __processor_model *cpu_model, { __cpuid (0x80000021, eax, ebx, ecx, edx); if (eax & bit_AMD_PREFETCHI) - { - set_feature (FEATURE_PREFETCHI); - } + set_feature (FEATURE_PREFETCHI); + if (eax & bit_AVX512BMM) + set_feature (FEATURE_AVX512BMM); } #undef set_feature diff --git a/gcc/config/i386/cpuid.h b/gcc/config/i386/cpuid.h index c48556afa6e..0b5e6cc99a0 100644 --- a/gcc/config/i386/cpuid.h +++ b/gcc/config/i386/cpuid.h @@ -75,6 +75,7 @@ /* Extended Features (%eax == 0x80000021) */ /* %eax */ #define bit_AMD_PREFETCHI (1 << 20) +#define bit_AVX512BMM (1 << 23) /* Extended Features Leaf (%eax == 7, %ecx == 0) */ /* %ebx */ @@ -167,9 +168,6 @@ #define bit_AESKLE ( 1<<0 ) #define bit_WIDEKL ( 1<<2 ) -/* Sub leaf (%eax == 0x21) */ -#define bit_AVX512BMM ( 1<<23 ) - /* AMX sub leaf (%eax == 0x1e, %ecx == 1) */ /* %eax */ #define bit_AMX_FP8 (1 << 4) diff --git a/gcc/testsuite/gcc.target/i386/avx512bmm-check-1.c b/gcc/testsuite/gcc.target/i386/avx512bmm-check-1.c new file mode 100644 index 00000000000..176b06eb09a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512bmm-check-1.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=znver6" } */ + +#ifndef __AVX512BMM__ +# error AVX512BMM should be enabled for target znver6. +#endif diff --git a/gcc/testsuite/gcc.target/i386/avx512bmm-check-2.c b/gcc/testsuite/gcc.target/i386/avx512bmm-check-2.c new file mode 100644 index 00000000000..956ae2d2acb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512bmm-check-2.c @@ -0,0 +1,20 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -march=native" } */ + +int +main () +{ + if (__builtin_cpu_supports ("avx512bmm")) + { +#ifndef __AVX512BMM__ + __builtin_abort (); +#endif + } + else + { +#ifdef __AVX512BMM__ + __builtin_abort (); +#endif + } + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/avx512bmm-check-3.c b/gcc/testsuite/gcc.target/i386/avx512bmm-check-3.c new file mode 100644 index 00000000000..25ffeb8c87b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512bmm-check-3.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=native -mno-avx512bmm" } */ + +#if defined(__ZNVER6__) && defined(__AVX512BMM__) +# error AVX512BMM should be disabled for native detection of target znver6 with -mno-avx512bmm. +#endif -- 2.51.0
