Compare commits

..

1 Commits

Author SHA1 Message Date
59c7481e81 import CS gcc-toolset-15-gcc-15.1.1-2.4.el9 2025-09-26 13:29:11 +00:00
46 changed files with 40 additions and 475 deletions

View File

@ -1 +0,0 @@
1

View File

@ -0,0 +1,4 @@
5a3445261fc63c005a158be98df75ab25f0ef592 SOURCES/gcc-15.1.1-20250521.tar.xz
ae5fbb33bcb442121fbbf482a93f6b3c84d489ee SOURCES/isl-0.24.tar.bz2
a773e95eebbe32d537e03b2f080a3b5fdaf771b0 SOURCES/newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz
c1e42726a71ca4a385502580778439bd326c6d4e SOURCES/nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz

4
.gitignore vendored
View File

@ -0,0 +1,4 @@
SOURCES/gcc-15.1.1-20250521.tar.xz
SOURCES/isl-0.24.tar.bz2
SOURCES/newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz
SOURCES/nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz

View File

@ -1,72 +0,0 @@
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc
index fa740b42b88..5d808ee51ee 100644
--- a/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc
@@ -39,14 +39,14 @@ void test01()
const ios_base::iostate good = ios_base::goodbit;
ios_base::iostate errorstate = good;
- iss.str("62/04/71");
+ iss.str("60/04/71");
iterator_type is_it01(iss);
tm time01;
errorstate = good;
iterator_type ret01 = tim_get.get_date(is_it01, end, iss, errorstate,
&time01);
VERIFY( errorstate == ios_base::failbit );
- VERIFY( *ret01 == '2' );
+ VERIFY( *ret01 == '6' );
iss.str("04/38/71");
iterator_type is_it02(iss);
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc
index 07f4c369e58..c975c8523d8 100644
--- a/libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc
@@ -40,14 +40,14 @@ void test01()
const ios_base::iostate good = ios_base::goodbit;
ios_base::iostate errorstate = good;
- iss.str(L"62/04/71");
+ iss.str(L"60/04/71");
iterator_type is_it01(iss);
tm time01;
errorstate = good;
iterator_type ret01 = tim_get.get_date(is_it01, end, iss, errorstate,
&time01);
VERIFY( errorstate == ios_base::failbit );
- VERIFY( *ret01 == L'2' );
+ VERIFY( *ret01 == L'6' );
iss.str(L"04/38/71");
iterator_type is_it02(iss);
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc
index e6f53de4a55..c9d9896a6c0 100644
--- a/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc
@@ -76,8 +76,8 @@ void test01()
errorstate = good;
iterator_type ret03 = tim_get.get_year(is_it03, end, iss, errorstate,
&time03);
- VERIFY( time03.tm_year == 197 - 1900 );
- VERIFY( errorstate == good );
+ VERIFY( time03.tm_year == 3 );
+ VERIFY( errorstate == ios_base::failbit );
VERIFY( *ret03 == 'd' );
iss.str("71d71");
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc
index ba95fb91520..e17712098f4 100644
--- a/libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc
@@ -76,8 +76,8 @@ void test01()
errorstate = good;
iterator_type ret03 = tim_get.get_year(is_it03, end, iss, errorstate,
&time03);
- VERIFY( time03.tm_year == 197 - 1900 );
- VERIFY( errorstate == good );
+ VERIFY( time03.tm_year == 3 );
+ VERIFY( errorstate == ios_base::failbit );
VERIFY( *ret03 == L'd' );
iss.str(L"71d71");

View File

@ -5,7 +5,7 @@ index b64e71dae22..5bf47b20820 100644
@@ -12,7 +12,6 @@
jump threading opportunities. Skip the later tests on aarch64. */
/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom3" { target { ! aarch64*-*-* } } } } */
/* { dg-final { scan-tree-dump "Jumps threaded: 10" "thread2" { target { ! aarch64*-*-* } } } } */
/* { dg-final { scan-tree-dump "Jumps threaded: 9" "thread2" { target { ! aarch64*-*-* } } } } */
-/* { dg-final { scan-tree-dump "Jumps threaded: 17" "thread2" { target { aarch64*-*-* } } } } */
enum STATE {

View File

@ -8744,7 +8744,7 @@
+//asm (".hidden _ZNKSt10filesystem4_Dir7currentEv");
--- libstdc++-v3/src/nonshared17/Makefile.am.jj 2025-05-06 15:48:48.687747618 +0200
+++ libstdc++-v3/src/nonshared17/Makefile.am 2025-05-06 16:10:20.603262671 +0200
@@ -0,0 +1,174 @@
@@ -0,0 +1,155 @@
+## Makefile for the C++17 sources of the GNU C++ Standard library.
+##
+## Copyright (C) 1997-2025 Free Software Foundation, Inc.
@ -8839,25 +8839,6 @@
+libnonshared17convenience110_la_SOURCES = $(sources110) $(inst_sources110)
+libnonshared17convenience140_la_SOURCES = $(sources140) $(inst_sources140)
+
+if GLIBCXX_LDBL_ALT128_COMPAT
+floating_from_chars.lo: floating_from_chars.cc
+ $(LTCXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+floating_from_chars.o: floating_from_chars.cc
+ $(CXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+floating_to_chars.lo: floating_to_chars.cc
+ $(LTCXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+floating_to_chars.o: floating_to_chars.cc
+ $(CXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+floating_from_chars110.lo: floating_from_chars110.cc
+ $(LTCXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+floating_from_chars110.o: floating_from_chars110.cc
+ $(CXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+floating_to_chars110.lo: floating_to_chars110.cc
+ $(LTCXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+floating_to_chars110.o: floating_to_chars110.cc
+ $(CXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+endif
+
+# AM_CXXFLAGS needs to be in each subdirectory so that it can be
+# modified in a per-library or per-sub-library way. Need to manually
+# set this option because CONFIG_CXXFLAGS has to be after
@ -8947,7 +8928,7 @@
+#include "../c++17/cow-string-inst.cc"
--- libstdc++-v3/src/nonshared17/Makefile.in.jj 2025-05-06 15:48:48.688747604 +0200
+++ libstdc++-v3/src/nonshared17/Makefile.in 2025-05-07 10:09:21.643442963 +0200
@@ -0,0 +1,871 @@
@@ -0,0 +1,854 @@
+# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# @configure_input@
+
@ -9799,23 +9780,6 @@
+
+vpath % $(top_srcdir)/src/nonshared17
+
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@floating_from_chars.lo: floating_from_chars.cc
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ $(LTCXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@floating_from_chars.o: floating_from_chars.cc
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ $(CXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@floating_to_chars.lo: floating_to_chars.cc
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ $(LTCXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@floating_to_chars.o: floating_to_chars.cc
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ $(CXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@floating_from_chars110.lo: floating_from_chars110.cc
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ $(LTCXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@floating_from_chars110.o: floating_from_chars110.cc
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ $(CXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@floating_to_chars110.lo: floating_to_chars110.cc
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ $(LTCXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@floating_to_chars110.o: floating_to_chars110.cc
+@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ $(CXXCOMPILE) -mabi=ibmlongdouble $(LONG_DOUBLE_128_FLAGS) -c $<
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

View File

@ -4,7 +4,6 @@
%global have_scl_utils 0
%endif
%global gts_ver 15
%global gts_next %(v="%{gts_ver}"; echo $((++v)))
%{?scl_package:%global scl gcc-toolset-%{gts_ver}}
%global scl_prefix gcc-toolset-%{gts_ver}-
%if %have_scl_utils
@ -16,13 +15,13 @@ BuildRequires: gcc-toolset-%{gts_ver}-devel
%{?scl:%global __strip %%{_scl_root}/usr/bin/strip}
%{?scl:%global __objdump %%{_scl_root}/usr/bin/objdump}
%{?scl:%scl_package gcc}
%global DATE 20260123
%global gitrev 226e8310eed1ce10784f98f199e1aa4b12ca86b7
%global gcc_version 15.2.1
%global DATE 20250521
%global gitrev b9def1721b12cae307c1a1ebc49030fce6531dfa
%global gcc_version 15.1.1
%global gcc_major 15
# Note, gcc_release must be integer, if you want to add suffixes to
# %%{release}, append them after %%{gcc_release} on Release: line.
%global gcc_release 7
%global gcc_release 2
%global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804
%global newlib_cygwin_gitrev d35cc82b5ec15bb8a5fe0fe11e183d1887992e99
%global isl_version 0.24
@ -172,7 +171,7 @@ BuildRequires: gcc-toolset-%{gts_ver}-devel
Summary: GCC version %{gcc_major}
Name: %{?scl_prefix}gcc
Version: %{gcc_version}
Release: %{gcc_release}%{?dist}
Release: %{gcc_release}.4%{?dist}
# License notes for some of the less obvious ones:
# gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para
# isl: MIT, BSD-2-Clause
@ -252,10 +251,12 @@ BuildRequires: libzstd-devel
BuildRequires: glibc >= 2.3.90-35
%endif
%ifarch %{multilib_64_archs}
BuildRequires: (glibc32 or glibc-devel(%{__isa_name}-32))
# Ensure glibc{,-devel} is installed for both multilib arches
%if 0%{?rhel} < 10
BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
%else
BuildRequires: /usr/lib/libc.so /usr/lib64/libc.so
%endif
%ifarch sparcv9 ppc
BuildRequires: (glibc64 or glibc-devel(%{__isa_name}-64))
%endif
%ifarch ia64
BuildRequires: libunwind >= 0.98
@ -299,7 +300,9 @@ Requires: libgcc >= 4.1.2-43
Requires: libgomp >= 4.4.4-13
# lto-wrapper invokes make
Requires: make
Requires: (%{?scl_prefix}runtime >= %{gts_ver} with %{?scl_prefix}runtime < %{gts_next})
%if %have_scl_utils
%{?scl:Requires:%scl_runtime}
%endif
AutoReq: true
# Various libraries are imported. #1859893 asks us to list them all.
Provides: bundled(libiberty)
@ -357,9 +360,6 @@ Patch9: gcc15-Wno-format-security.patch
Patch10: gcc15-rh1574936.patch
Patch11: gcc15-d-shared-libphobos.patch
Patch12: gcc15-pr119006.patch
Patch13: gcc15-pr123273.patch
Patch14: gcc15-pr123667.patch
Patch15: gcc15-pr123737.patch
Patch50: isl-rh2155127.patch
@ -723,9 +723,6 @@ so that there cannot be any synchronization problems.
%patch -P10 -p0 -b .rh1574936~
%patch -P11 -p0 -b .d-shared-libphobos~
%patch -P12 -p0 -b .pr119006~
%patch -P13 -p0 -b .pr123273~
%patch -P14 -p0 -b .pr123667~
%patch -P15 -p0 -b .pr123737~
%patch -P100 -p1 -b .fortran-fdec-duplicates~
@ -829,6 +826,13 @@ sed -i '/^GENERATE_TREEVIEW/s/YES/NO/' libstdc++-v3/doc/doxygen/user.cfg.in
# Undo the broken autoconf change in recent Fedora versions
export CONFIG_SITE=NONE
%if 0%{?rhel} == 10
# Work around https://issues.redhat.com/browse/RHEL-49348
%ifarch ppc64le
export GLIBC_TUNABLES=glibc.cpu.hwcaps=-arch_3_1
%endif
%endif
CC=gcc
CXX=g++
OPT_FLAGS="%{optflags}"
@ -2908,50 +2912,18 @@ fi
%endif
%changelog
* Mon Jan 26 2026 Siddhesh Poyarekar <siddhesh@redhat.com> 15.2.1-7
- update from releases/gcc-15 branch (RHEL-116507)
- PRs ada/68179, ada/123060, ada/123088, ada/123096, ada/123138, ada/123185,
ada/123289, ada/123302, ada/123306, ada/123371, ada/123589,
analyzer/122975, analyzer/123085, c/123156, c++/91388, c++/114764,
c++/116952, c++/120446, c++/121854, c++/121966, c++/122048,
c++/122070, c++/122550, c++/122668, c++/122752, c++/122772,
c++/122834, c++/122922, c++/123331, c++/123597, debug/121964,
diagnostics/120063, fortran/107406, libfortran/122936,
libstdc++/120446, libstdc++/122812, libstdc++/122907,
libstdc++/123147, middle-end/111817, middle-end/123107,
middle-end/123392, middle-end/123703, rtl-optimization/121773,
rtl-optimization/122215, rtl-optimization/123121,
rtl-optimization/123523, target/117575, target/119130,
target/120250, target/121192, target/121485, target/123022,
target/123092, target/123155, target/123217, target/123460,
target/123484, target/123489, target/123521, target/123607,
target/123742, testsuite/123353, tree-optimization/122793,
tree-optimization/122868, tree-optimization/123040,
tree-optimization/123300, tree-optimization/123351,
tree-optimization/123372, tree-optimization/123431,
tree-optimization/123513, tree-optimization/123602,
tree-optimization/123736, tree-optimization/123741
* Mon Jun 16 2025 Marek Polacek <polacek@redhat.com> 15.1.1-2.4
- ship libstdc++.modules.json (RHEL-97095)
* Tue Sep 9 2025 Siddhesh Poyarekar <siddhesh@redhat.com> 15.1.1-2.6
- Fix glibc32 build dependency (RHEL-113183)
* Wed Jul 30 2025 Siddhesh Poyarekar <siddhesh@redhat.com> 15.1.1-2.5
- Drop the workaround for CVE-2025-5702 (RHEL-100161)
* Fri Jun 20 2025 Siddhesh Poyarekar <siddhesh@redhat.com> 15.1.1-2.4
- Require gcc-toolset-N-runtime (RHEL-94672)
* Mon Jun 16 2025 Marek Polacek <polacek@redhat.com> 15.1.1-2.3
- ship libstdc++.modules.json (RHEL-97043)
- configure with --with-long-double-format=ieee (RHEL-97055)
* Thu Jun 12 2025 Siddhesh Poyarekar <siddhesh@redhat.com> 15.1.1-2.2
- Tune for z16 on s390x by default on RHEL10 and later (RHEL-94282)
* Thu Jun 12 2025 Siddhesh Poyarekar <siddhesh@redhat.com> 15.1.1-2.3
- Add AS_NEEDED libstdc++.so.6 when only needed through libstdc++_nonshared
(RHEL-84680)
(RHEL-94866)
* Fri Jun 6 2025 Marek Polacek <polacek@redhat.com> 15.1.1-2.1
- configure with --enable-host-pie --enable-host-bind-now (RHEL-95595)
* Fri Jun 6 2025 Marek Polacek <polacek@redhat.com> 15.1.1-2.2
- configure with --enable-host-pie --enable-host-bind-now (RHEL-95564)
* Wed Jun 4 2025 Marek Polacek <polacek@redhat.com> 15.1.1-2.1
- re-enable annobin-plugin and offload-nvptx
* Wed May 21 2025 Marek Polacek <polacek@redhat.com> 15.1.1-2
- update from releases/gcc-15 branch

View File

@ -1,7 +0,0 @@
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.gate-build-fast-lane.functional}
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.gate-build-slow-lane.functional}

View File

@ -1,54 +0,0 @@
2026-01-06 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/123273
* lex.cc (cpp_directive_only_process): Only go to done_comment
for '/' if star is true and esc is false. When seeing '\\' with
esc set to true, clear esc as well as star instead of keeping esc
set.
* c-c++-common/cpp/dir-only-10.c: New test.
* c-c++-common/cpp/dir-only-11.c: New test.
--- libcpp/lex.cc.jj 2026-01-02 09:56:10.417332292 +0100
+++ libcpp/lex.cc 2026-01-05 16:40:26.413766032 +0100
@@ -5461,7 +5461,13 @@ cpp_directive_only_process (cpp_reader *
switch (c)
{
case '\\':
- esc = true;
+ if (esc)
+ {
+ star = false;
+ esc = false;
+ }
+ else
+ esc = true;
break;
case '\r':
@@ -5492,7 +5498,7 @@ cpp_directive_only_process (cpp_reader *
break;
case '/':
- if (star)
+ if (star && !esc)
goto done_comment;
/* FALLTHROUGH */
--- gcc/testsuite/c-c++-common/cpp/dir-only-10.c.jj 2026-01-05 17:04:26.144566116 +0100
+++ gcc/testsuite/c-c++-common/cpp/dir-only-10.c 2026-01-05 17:05:02.226946201 +0100
@@ -0,0 +1,5 @@
+/* PR preprocessor/123273 */
+/* { dg-do preprocess } */
+/* { dg-options -fdirectives-only } */
+
+/* *\/""" */
--- gcc/testsuite/c-c++-common/cpp/dir-only-11.c.jj 2026-01-05 17:05:18.498666647 +0100
+++ gcc/testsuite/c-c++-common/cpp/dir-only-11.c 2026-01-05 17:06:17.574651691 +0100
@@ -0,0 +1,6 @@
+/* PR preprocessor/123273 */
+/* { dg-do preprocess } */
+/* { dg-options -fdirectives-only } */
+
+/* *\\
+/""" */

View File

@ -1,94 +0,0 @@
2026-01-21 Jakub Jelinek <jakub@redhat.com>
PR c++/123667
* semantics.cc (finish_decltype_type): Allow a structured binding
for ptds.saved to have DECL_HAS_VALUE_EXPR_P cleared, if it is
not within current_function_decl, but in that case assert that
lookup_decomp_type succeeded.
* g++.dg/cpp1z/decomp66.C: New test.
* g++.dg/cpp1z/decomp67.C: New test.
--- gcc/cp/semantics.cc.jj 2026-01-15 16:33:46.000000000 +0100
+++ gcc/cp/semantics.cc 2026-01-21 17:55:14.272577246 +0100
@@ -13062,12 +13062,16 @@ finish_decltype_type (tree expr, bool id
{
if (ptds.saved)
{
- gcc_checking_assert (DECL_HAS_VALUE_EXPR_P (expr));
+ gcc_checking_assert (DECL_HAS_VALUE_EXPR_P (expr)
+ || (DECL_CONTEXT (expr)
+ != current_function_decl));
/* DECL_HAS_VALUE_EXPR_P is always set if
- processing_template_decl. If lookup_decomp_type
+ processing_template_decl at least for structured bindings
+ within the template. If lookup_decomp_type
returns non-NULL, it is the tuple case. */
if (tree ret = lookup_decomp_type (expr))
return ret;
+ gcc_checking_assert (DECL_HAS_VALUE_EXPR_P (expr));
}
if (DECL_HAS_VALUE_EXPR_P (expr))
/* Expr is an array or struct subobject proxy, handle
--- gcc/testsuite/g++.dg/cpp1z/decomp66.C.jj 2026-01-21 17:59:28.122275457 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp66.C 2026-01-21 17:58:30.737247916 +0100
@@ -0,0 +1,23 @@
+// PR c++/123667
+// { dg-do compile { target c++14 } }
+// { dg-options "" }
+
+namespace std {
+ template <typename T> struct tuple_size;
+ template <int, typename> struct tuple_element;
+}
+
+struct A {
+ int i;
+ template <int I> int &get () { return i; }
+};
+
+template <> struct std::tuple_size <A> { static const int value = 2; };
+template <int I> struct std::tuple_element <I,A> { using type = int; };
+
+int
+main ()
+{
+ auto [ x, y ] = A { 0 }; // { dg-warning "structured bindings only available with" "" { target c++14_down } }
+ [] (auto t) { using z = decltype (x); } (1);
+}
--- gcc/testsuite/g++.dg/cpp1z/decomp67.C.jj 2026-01-21 17:59:31.139224331 +0100
+++ gcc/testsuite/g++.dg/cpp1z/decomp67.C 2026-01-21 17:59:07.235629406 +0100
@@ -0,0 +1,33 @@
+// PR c++/123667
+// { dg-do compile { target c++11 } }
+// { dg-options "" }
+
+namespace std {
+ template <typename T> struct tuple_size;
+ template <int, typename> struct tuple_element;
+}
+
+struct A {
+ int i;
+ template <int I> int &get () { return i; }
+};
+
+template <> struct std::tuple_size <A> { static const int value = 2; };
+template <int I> struct std::tuple_element <I,A> { using type = int; };
+
+auto [ x, y ] = A { 0 }; // { dg-warning "structured bindings only available with" "" { target c++14_down } }
+
+template <int N>
+void
+foo ()
+{
+ using a = decltype (x);
+ auto [ x, y ] = A { 0 }; // { dg-warning "structured bindings only available with" "" { target c++14_down } }
+ using b = decltype (x);
+}
+
+void
+bar ()
+{
+ foo <42> ();
+}

View File

@ -1,86 +0,0 @@
2026-01-21 Jakub Jelinek <jakub@redhat.com>
PR c++/123737
* parser.cc (cp_parser_expression): Don't handle CPP_EMBED just
as the last byte in it if expression has or might have overloaded
type. In that case call build_x_compound_expr for each byte
in CPP_EMBED separately.
* g++.dg/cpp/embed-28.C: New test.
* g++.dg/parse/comma3.C: New test.
--- gcc/cp/parser.cc.jj 2026-01-20 01:13:20.324260446 +0100
+++ gcc/cp/parser.cc 2026-01-21 14:04:32.086336386 +0100
@@ -12132,10 +12132,24 @@ cp_parser_expression (cp_parser* parser,
and one CPP_NUMBER plus CPP_COMMA before it and one
CPP_COMMA plus CPP_NUMBER after it is guaranteed by
the preprocessor. Thus, parse the whole CPP_EMBED just
- as a single INTEGER_CST, the last byte in it. */
+ as a single INTEGER_CST, the last byte in it. Though,
+ don't use that shortcut if the comma operator could be
+ overloaded. */
tree raw_data = cp_lexer_peek_token (parser->lexer)->u.value;
location_t loc = cp_lexer_peek_token (parser->lexer)->location;
cp_lexer_consume_token (parser->lexer);
+ if (OVERLOAD_TYPE_P (TREE_TYPE (expression))
+ || type_dependent_expression_p (expression))
+ for (unsigned i = 0; i < RAW_DATA_LENGTH (raw_data) - 1U; ++i)
+ {
+ assignment_expression
+ = *raw_data_iterator (raw_data, i);
+ assignment_expression.set_location (loc);
+ expression
+ = build_x_compound_expr (loc, expression,
+ assignment_expression, NULL_TREE,
+ complain_flags (decltype_p));
+ }
assignment_expression
= *raw_data_iterator (raw_data, RAW_DATA_LENGTH (raw_data) - 1);
assignment_expression.set_location (loc);
--- gcc/testsuite/g++.dg/cpp/embed-28.C.jj 2026-01-21 14:11:14.617520864 +0100
+++ gcc/testsuite/g++.dg/cpp/embed-28.C 2026-01-21 14:11:01.121749695 +0100
@@ -0,0 +1,19 @@
+// PR c++/123737
+// { dg-do run }
+// { dg-options "--embed-dir=${srcdir}/c-c++-common/cpp/embed-dir" }
+
+struct A {
+ A (int x) : a (0), e (x) {}
+ unsigned long a, e;
+ A &operator, (int) { ++a; return *this; }
+ ~A () { if (a != e) __builtin_abort (); }
+};
+
+int
+main ()
+{
+ A a = 231;
+ a,
+#embed <magna-carta.txt> limit (231)
+ ;
+}
--- gcc/testsuite/g++.dg/parse/comma3.C.jj 2026-01-21 14:08:53.834908004 +0100
+++ gcc/testsuite/g++.dg/parse/comma3.C 2026-01-21 12:15:02.334948163 +0100
@@ -0,0 +1,22 @@
+// PR c++/123737
+// { dg-do run }
+
+struct A {
+ A (int x) : a (0), e (x) {}
+ unsigned long a, e;
+ A &operator, (int) { ++a; return *this; }
+ ~A () { if (a != e) __builtin_abort (); }
+};
+
+int
+main ()
+{
+ A a = 131;
+ a, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
+}

View File

@ -1,38 +0,0 @@
# Tier 0 test plan. It's actually Tier 1
# - limited to its public part
# - executed on the architecture at hand
# When run by osci.tier0 on CentOS Stream or RHEL, it receives the following
# context:
# arch=x86_64 (the architecture at hand, currently OSCI uses just x86_64)
# distro=rhel<M>.<m> (even for CentOS Stream builds)
# trigger=build
---
summary: Tier 0 test plan
context:
component: gcc-toolset-15-gcc
environment+:
WITH_SCL: gcc-toolset-15-env
discover:
- name: collect_info
how: shell
tests:
- name: /info/rpms
test: rpm -qa --last
- name: public_tests
how: fmf
url: https://gitlab.com/redhat/centos-stream/tests/gcc.git
filter: 'tag: CI-Tier-1'
provision+:
hardware:
disk:
- size: ">= 60 GiB"
memory: ">= 8 GiB"
prepare+:
- how: shell
script:
- dnf config-manager --set-enabled '*CRB*' || true
- dnf config-manager --set-enabled crb || true
- dnf config-manager --set-enabled rhel-buildroot || true
- dnf config-manager --set-enabled epel || true
execute:
how: tmt

View File

@ -1,23 +0,0 @@
badfuncs:
# GCC doesn't use the "forbidden" functions as such. Just some of its
# sanitizers can instrument those functions which leads to false
# positives in the badfuncs test.
ignore:
- /usr/lib*/libasan.so.*.*.*
- /usr/lib*/libtsan.so.*.*.*
specname:
# In GCC toolsets builds, the spec file name and the package may not
# be exactly the same, the package is prefixed with gcc-toolset-NN-.
# Let's ignore the prefix.
match: suffix
primary: filename
runpath:
# Although gcc-toolset sanitizers link gcc-toolset libraries from
# /opt/..., they themselves are placed in /usr. The runpath test
# doesn't like this difference. Explicitly allow it.
allowed_paths:
- /opt/rh/gcc-toolset-15/root/usr/lib
- /opt/rh/gcc-toolset-15/root/usr/lib/../lib64
- /opt/rh/gcc-toolset-15/root/usr/lib64

View File

@ -1,4 +0,0 @@
SHA512 (gcc-15.2.1-20260123.tar.xz) = c4f0513e4027632f2d62b1feead9fa197e46f796212bd7f07eaff9b2e84a1230b601f3a6f2cabfc9994ca0e47f95b21fcb9a182575a27e30100e3206d6767070
SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95
SHA512 (newlib-cygwin-d35cc82b5ec15bb8a5fe0fe11e183d1887992e99.tar.xz) = ef9495745a96d1d76f9f425c4a48c807fface36a1aa92351c5d024103678d144d046e8de55d195103784472c14874e29e4b9284d5d6a2e7bb27fd98c8455a881
SHA512 (nvptx-tools-87ce9dc5999e5fca2e1d3478a30888d9864c9804.tar.xz) = 941e763af8601b89f0e4ec48a2d68ae0a8e70ee1e6ba6859394b021ad7bd7d143cc529f3c35c08d7f84e5554980ddcc97cf05b6c4755c2bc36c91161b79e8cea