diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 24c5a9d712..fdfdec28b5 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -200,7 +200,7 @@ RECIPE_MAINTAINER:pn-gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <r
 RECIPE_MAINTAINER:pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER:pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER:pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER:pn-gcc-source-15.2.0 = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gcc-source-16.1.0 = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER:pn-gcompat = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER:pn-gconf = "Ross Burton <ross.burton@arm.com>"
 RECIPE_MAINTAINER:pn-gcr = "Unassigned <unassigned@yoctoproject.org>"
diff --git a/meta/conf/distro/include/tcmode-default.inc b/meta/conf/distro/include/tcmode-default.inc
index 3c956dfb12..33d3efd845 100644
--- a/meta/conf/distro/include/tcmode-default.inc
+++ b/meta/conf/distro/include/tcmode-default.inc
@@ -9,7 +9,7 @@ PREFERRED_PROVIDER_virtual/nativesdk-cross-binutils ?= "binutils-crosssdk-${SDK_
 # Default libc config
 PREFERRED_PROVIDER_virtual/gettext ??= "gettext"
 
-GCCVERSION ?= "15.%"
+GCCVERSION ?= "16.%"
 SDKGCCVERSION ?= "${GCCVERSION}"
 GLIBCVERSION ?= "2.43%"
 RUSTVERSION ?= "1.95.0%"
diff --git a/meta/recipes-devtools/gcc/gcc-15.2.inc b/meta/recipes-devtools/gcc/gcc-16.1.inc
similarity index 88%
rename from meta/recipes-devtools/gcc/gcc-15.2.inc
rename to meta/recipes-devtools/gcc/gcc-16.1.inc
index a96f2b8411..3a96228631 100644
--- a/meta/recipes-devtools/gcc/gcc-15.2.inc
+++ b/meta/recipes-devtools/gcc/gcc-16.1.inc
@@ -2,11 +2,11 @@ require gcc-common.inc
 
 # Third digit in PV should be incremented after a minor release
 
-PV = "15.2.0"
+PV = "16.1.0"
 
 # BINV should be incremented to a revision after a minor gcc release
 
-BINV = "15.2.0"
+BINV = "16.1.0"
 
 FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:"
 
@@ -34,17 +34,17 @@ LIC_FILES_CHKSUM = "\
 #SRC_URI[sha256sum] = "41bf7be5dc029112a9df625266e7de030ffc36ff3638f270b180ae8c91fe6449"
 
 # from snapshot
-#RELEASE ?= "15-20250420"
-#RELEASE ?= "15.1.0-RC-20250418"
+#RELEASE ?= "16-20260502"
+#RELEASE ?= "16.1.0-RC-20260424"
 #BASEURI ?= "https://gcc.gnu.org/pub/gcc/snapshots/${RELEASE}/gcc-${RELEASE}.tar.xz"
 #SOURCEDIR ?= "gcc-${RELEASE}"
-#SRC_URI[sha256sum] = "fe18624317c6c662977eea8b5a506ec6c132fc11c7a8d53e2f6d21b139b0af3c"
+#SRC_URI[sha256sum] = "e8edc2aaf0affce7020658b0be9a3fc820aa33dc610640d3fe1ba1aee360051b"
 
 # official release
 RELEASE ?= "${PV}"
 BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.xz"
 SOURCEDIR ?= "gcc-${PV}"
-SRC_URI[sha256sum] = "438fd996826b0c82485a29da03a72d71d6e3541a83ec702df4271f6fe025d24e"
+SRC_URI[sha256sum] = "50efb4d94c3397aff3b0d61a5abd748b4dd31d9d3f2ab7be05b171d36a510f79"
 
 SRC_URI = "${BASEURI} \
            file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
@@ -72,11 +72,6 @@ SRC_URI = "${BASEURI} \
            file://0023-Fix-install-path-of-linux64.h.patch \
            file://0024-Avoid-hardcoded-build-paths-into-ppc-libgcc.patch \
            file://0025-gcc-testsuite-tweaks-for-mips-OE.patch \
-           file://0026-fix-pr90579-testcases.patch \
-           file://0027-gcc15-pr122394.patch \
-           file://0028-fix-gcc-libitm-false-postives-01.patch \
-           file://0028-fix-gcc-libitm-false-postives-02.patch \
-           file://0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch \
            file://0001-mapper-localhost-might-not-be-known.patch \
 "
 
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_15.2.bb b/meta/recipes-devtools/gcc/gcc-cross-canadian_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-cross-canadian_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-cross-canadian_16.1.bb
diff --git a/meta/recipes-devtools/gcc/gcc-cross_15.2.bb b/meta/recipes-devtools/gcc/gcc-cross_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-cross_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-cross_16.1.bb
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_15.2.bb b/meta/recipes-devtools/gcc/gcc-crosssdk_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-crosssdk_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-crosssdk_16.1.bb
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_15.2.bb b/meta/recipes-devtools/gcc/gcc-runtime_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-runtime_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-runtime_16.1.bb
diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers_15.2.bb b/meta/recipes-devtools/gcc/gcc-sanitizers_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-sanitizers_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-sanitizers_16.1.bb
diff --git a/meta/recipes-devtools/gcc/gcc-source_15.2.bb b/meta/recipes-devtools/gcc/gcc-source_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-source_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-source_16.1.bb
diff --git a/meta/recipes-devtools/gcc/gcc/0007-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch b/meta/recipes-devtools/gcc/gcc/0007-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
index 621f8bc41f..07e9e23f3d 100644
--- a/meta/recipes-devtools/gcc/gcc/0007-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
+++ b/meta/recipes-devtools/gcc/gcc/0007-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
@@ -172,7 +172,7 @@ index fbc75a90ad5..38c239940bd 100644
 +  SYSTEMLIBS_DIR "ld-linux-loongarch-" ABI_SPEC ".so.1"
  
  #define MUSL_ABI_SPEC \
-   "%{mabi=lp64d:}" \
+   "%{mabi=ilp32d:}" \
 @@ -40,7 +40,7 @@ along with GCC; see the file COPYING3.  If not see
  
  #undef MUSL_DYNAMIC_LINKER
diff --git a/meta/recipes-devtools/gcc/gcc/0017-Search-target-sysroot-gcc-version-specific-dirs-with.patch b/meta/recipes-devtools/gcc/gcc/0017-Search-target-sysroot-gcc-version-specific-dirs-with.patch
index a087ba17d9..678457bbc9 100644
--- a/meta/recipes-devtools/gcc/gcc/0017-Search-target-sysroot-gcc-version-specific-dirs-with.patch
+++ b/meta/recipes-devtools/gcc/gcc/0017-Search-target-sysroot-gcc-version-specific-dirs-with.patch
@@ -89,12 +89,12 @@ index 007c91780f6..22eb17bc099 100644
 +	            {
 +		      memcpy (path + len, this_multi, this_multi_len + 1);
 +	              memcpy (path + len + this_multi_len, multi_suffix, suffix_len + 1);
-+	              ret = callback (path, callback_info);
++	              ret = callback (path);
 +	                if (ret)
 +		          break;
 +	            }
 +	        }
 +
  	      memcpy (path + len, multi_suffix, suffix_len + 1);
- 	      ret = callback (path, callback_info);
+ 	      ret = callback (path);
  	      if (ret)
diff --git a/meta/recipes-devtools/gcc/gcc/0022-libatomic-Do-not-enforce-march-on-aarch64.patch b/meta/recipes-devtools/gcc/gcc/0022-libatomic-Do-not-enforce-march-on-aarch64.patch
index 0f2a9d8c1f..5a8a79c0d2 100644
--- a/meta/recipes-devtools/gcc/gcc/0022-libatomic-Do-not-enforce-march-on-aarch64.patch
+++ b/meta/recipes-devtools/gcc/gcc/0022-libatomic-Do-not-enforce-march-on-aarch64.patch
@@ -29,14 +29,14 @@ index 0f1a7156084..255fe448e63 100644
  
  endif
 diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
-index 9798e7c09e9..3b3027eb77d 100644
+index 887ae41..b3d5e6f 100644
 --- a/libatomic/Makefile.in
 +++ b/libatomic/Makefile.in
-@@ -452,7 +452,6 @@ M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files)))
- libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \
- 	_$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_2) \
- 	$(am__append_3) $(am__append_4)
--@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv8-a+lse
- @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
- @ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=i586
- @ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -mcx16 -mcx16
+@@ -470,7 +470,6 @@ libatomic_la_LDFLAGS = $(libatomic_version_info) $(libatomic_version_script) \
+ @PARTIAL_VXWORKS_FALSE@	_$(s)_.lo,$(SIZEOBJS))) $(am__append_1) \
+ @PARTIAL_VXWORKS_FALSE@	$(am__append_2) $(am__append_3) \
+ @PARTIAL_VXWORKS_FALSE@	$(am__append_4) $(am__append_5)
+-@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=armv8-a+lse
+ @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
+ @ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=i586
+ @ARCH_LOONGARCH_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -mlsx|-mscq
diff --git a/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch b/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
index fcdd79a840..dc708942b4 100644
--- a/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
+++ b/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
@@ -92,10 +92,10 @@ index 6dd8fa3fce9..95672008219 100644
  	"preprocess" {
  	    set compile_type "preprocess"
 diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
-index c0376b04551..5d053dfe726 100644
+index 55775d0..df161a9 100644
 --- a/gcc/testsuite/lib/target-supports.exp
 +++ b/gcc/testsuite/lib/target-supports.exp
-@@ -2949,14 +2949,7 @@ proc check_mips_loongson_mmi_hw_available { } {
+@@ -3113,14 +3113,7 @@ proc check_mips_loongson_mmi_hw_available { } {
  	if { !([istarget mips*-*-*]) } {
  	    expr 0
  	} else {
@@ -107,11 +107,11 @@ index c0376b04551..5d053dfe726 100644
 -		return 0;
 -	      }
 -	    } "-mloongson-mmi"
-+	    expr 0
++            expr 0
  	}
      }]
  }
-@@ -2970,29 +2963,7 @@ proc check_mips_msa_hw_available { } {
+@@ -3134,29 +3127,7 @@ proc check_mips_msa_hw_available { } {
      if { !([istarget mips*-*-*]) } {
        expr 0
      } else {
@@ -138,38 +138,41 @@ index c0376b04551..5d053dfe726 100644
 -	}
 -	#endif
 -      } "-mmsa"
-+      expr 0
++    expr 0
      }
    }]
  }
-@@ -10371,6 +10342,7 @@ proc is-effective-target-keyword { arg } {
+@@ -10740,6 +10711,7 @@ proc is-effective-target-keyword { arg } {
  
  proc et-dg-runtest { runtest testcases flags default-extra-flags } {
      global dg-do-what-default
-+    global do-what-limit
++    global do-what-limit 
      global EFFECTIVE_TARGETS
      global et_index
  
-@@ -10378,6 +10350,7 @@ proc et-dg-runtest { runtest testcases flags default-extra-flags } {
+@@ -10747,16 +10719,19 @@ proc et-dg-runtest { runtest testcases flags default-extra-flags } {
  	foreach target $EFFECTIVE_TARGETS {
  	    set target_flags $flags
  	    set dg-do-what-default compile
-+            set do-what-limit link
- 	    set et_index [lsearch -exact $EFFECTIVE_TARGETS $target]
+-	    set et_index [lsearch -exact $EFFECTIVE_TARGETS $target]
++	    set do-what-limit link
++            set et_index [lsearch -exact $EFFECTIVE_TARGETS $target]
  	    if { [info procs add_options_for_${target}] != [list] } {
  		set target_flags [add_options_for_${target} "$flags"]
-@@ -10385,8 +10358,10 @@ proc et-dg-runtest { runtest testcases flags default-extra-flags } {
+ 	    }
  	    if { [info procs check_effective_target_${target}_runtime]
  		 != [list] && [check_effective_target_${target}_runtime] } {
  		set dg-do-what-default run
-+		set do-what-limit run
++                set do-what-limit run
  	    }
  	    $runtest $testcases $target_flags ${default-extra-flags}
+-	    unset et_index
 +	    unset do-what-limit
++            unset et_index
  	}
      } else {
- 	set et_index 0
-@@ -12172,6 +12147,7 @@ proc check_effective_target_sigsetjmp {} {
+ 	$runtest $testcases $flags ${default-extra-flags}
+@@ -12539,6 +12514,7 @@ proc check_effective_target_sigsetjmp {} {
  proc check_vect_support_and_set_flags { } {
      global DEFAULT_VECTCFLAGS
      global dg-do-what-default
@@ -177,51 +180,62 @@ index c0376b04551..5d053dfe726 100644
      global EFFECTIVE_TARGETS
  
      if [istarget powerpc*-*-*] {
-@@ -12203,6 +12179,7 @@ proc check_vect_support_and_set_flags { } {
+@@ -12570,14 +12546,16 @@ proc check_vect_support_and_set_flags { } {
  		set DEFAULT_VECTCFLAGS [linsert $DEFAULT_VECTCFLAGS 0 "-mcpu=970"]
  	    }
  	    set dg-do-what-default compile
-+        set do-what-limit link
- 	}
+-	}
++	 set do-what-limit link
++        }
      } elseif { [check_effective_target_x86] } {
  	lappend DEFAULT_VECTCFLAGS "-msse2"
-@@ -12210,6 +12187,7 @@ proc check_vect_support_and_set_flags { } {
+ 	if { [check_effective_target_sse2_runtime] } {
  	    set dg-do-what-default run
  	} else {
  	    set dg-do-what-default compile
-+        set do-what-limit link
- 	}
+-	}
++         set do-what-limit link	
++        }
      } elseif { [istarget mips*-*-*]
  	       && [check_effective_target_nomips16] } {
-@@ -12229,6 +12207,7 @@ proc check_vect_support_and_set_flags { } {
+ 	if { [check_effective_target_mpaired_single "-mpaired-single"] } {
+@@ -12596,7 +12574,8 @@ proc check_vect_support_and_set_flags { } {
  	    set dg-do-what-default run
  	} else {
  	    set dg-do-what-default compile
-+        set do-what-limit link
- 	}
+-	}
++	 set do-what-limit link
++        }
      } elseif [istarget alpha*-*-*] {
  	# Alpha's vectorization capabilities are extremely limited.
-@@ -12242,6 +12221,7 @@ proc check_vect_support_and_set_flags { } {
+ 	# It's more effort than its worth disabling all of the tests
+@@ -12609,7 +12588,8 @@ proc check_vect_support_and_set_flags { } {
  	    set dg-do-what-default run
  	} else {
  	    set dg-do-what-default compile
-+        set do-what-limit link
- 	}
+-	}
++	 set do-what-limit link
++        }
      } elseif [istarget ia64-*-*] {
  	set dg-do-what-default run
-@@ -12255,6 +12235,7 @@ proc check_vect_support_and_set_flags { } {
+     } elseif [is-effective-target arm_neon_ok] {
+@@ -12622,7 +12602,8 @@ proc check_vect_support_and_set_flags { } {
  	    set dg-do-what-default run
  	} else {
  	    set dg-do-what-default compile
-+        set do-what-limit link
- 	}
+-	}
++	 set do-what-limit link
++        }
      } elseif [istarget aarch64*-*-*] {
  	set dg-do-what-default run
-@@ -12279,6 +12260,7 @@ proc check_vect_support_and_set_flags { } {
+     } elseif [istarget s390*-*-*] {
+@@ -12646,7 +12627,8 @@ proc check_vect_support_and_set_flags { } {
  	} else {
  	    lappend DEFAULT_VECTCFLAGS "-march=z14" "-mzarch"
  	    set dg-do-what-default compile
-+        set do-what-limit link
- 	}
+-	}
++	 set do-what-limit link
++        }
      } elseif [istarget amdgcn-*-*] {
  	set dg-do-what-default run
+     } elseif [istarget riscv*-*-*] {
diff --git a/meta/recipes-devtools/gcc/gcc/0026-fix-pr90579-testcases.patch b/meta/recipes-devtools/gcc/gcc/0026-fix-pr90579-testcases.patch
deleted file mode 100644
index 6ada61b74f..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0026-fix-pr90579-testcases.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 679e24f5a751663998ff7202149a749e0f7251f9 Mon Sep 17 00:00:00 2001
-From: Harish Sadineni <Harish.Sadineni@windriver.com>
-Date: Sun, 10 Aug 2025 20:28:00 +0800
-Subject: [PATCH] testsuite: i386: Fix gcc.target/i386/pr90579.c when PIE is
- enabled [PR118885]
-
-When gcc build with --enable-deafult-pie the following tests
-were getting failed:
- FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+40
- FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+32
- FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+24
- FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+16
-
-    PR target/118885
-
-gcc/testsuite/ChangeLog:
-
-    * gcc.target/i386/pr90579.c: add -fno-pie to dg-options
-    to fix tests when PIE is enabled.
-
-Upstream-Status: Backport [https://gcc.gnu.org/cgit/gcc/commit/?id=679e24f5a751663998ff7202149a749e0f7251f9]
-
-Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
----
- gcc/testsuite/gcc.target/i386/pr90579.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gcc/testsuite/gcc.target/i386/pr90579.c b/gcc/testsuite/gcc.target/i386/pr90579.c
-index ab48a44063c..19081ec9fdf 100644
---- a/gcc/testsuite/gcc.target/i386/pr90579.c
-+++ b/gcc/testsuite/gcc.target/i386/pr90579.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O3 -mavx2 -mfpmath=sse" } */
-+/* { dg-options "-O3 -mavx2 -mfpmath=sse -fno-pie" } */
- 
- extern double r[6];
- extern double a[];
--- 
-2.49.0
diff --git a/meta/recipes-devtools/gcc/gcc/0027-gcc15-pr122394.patch b/meta/recipes-devtools/gcc/gcc/0027-gcc15-pr122394.patch
deleted file mode 100644
index 9ee371cef7..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0027-gcc15-pr122394.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From e55dcff97708a4937dc4d8736b8b3074ebbff6f3 Mon Sep 17 00:00:00 2001
-From: Jakub Jelinek <jakub@redhat.com>
-Date: Mon, 27 Oct 2025 17:43:17 +0100
-Subject: phiopt: Fix up DEBUG_EXPR_DECL creation in spaceship_replacement
- [PR122394]
-
-The following testcase ICEs in gcc 15 (and is at least latent in 12-14 too),
-because the DEBUG_EXPR_DECL has incorrect mode.  It has
-TREE_TYPE (orig_use_lhs) type, but TYPE_MODE (type) rather than
-TYPE_MODE (TREE_TYPE (orig_use_lhs)) where the two types are sometimes
-the same, but sometimes different (same if !has_cast_debug_uses, different
-otherwise).
-
-Though, there wouldn't be the this issue if it used the proper API to create
-the DEBUG_EXPR_DECL which takes care of everything.  This is the sole
-spot that doesn't use that API.
-
-Doesn't affect the trunk because the code has been removed and replaced with
-different stuff after the libstdc++ ABI change in r16-3474.
-Before r15-5557 the mode has been always wrong because this was done only
-for has_cast_debug_uses.  And the bug has been introduced with r12-5490.
-
-Enough archeology, while it could be fixed by changing the second
-SET_DECL_MODE argument, I think it is better to use build_debug_expr_decl.
-
-2025-10-27  Jakub Jelinek  <jakub@redhat.com>
-
-	PR tree-optimization/122394
-	* tree-ssa-phiopt.cc (spaceship_replacement): Use
-	build_debug_expr_decl instead of manually building DEBUG_EXPR_DECL
-	and getting SET_DECL_MODE wrong.
-
-	* g++.dg/opt/pr122394.C: New test.
-
-Upstream-Status: Backport [https://gcc.gnu.org/cgit/gcc/commit/?id=e55dcff97708a4937dc4d8736b8b3074ebbff6f3]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- gcc/testsuite/g++.dg/opt/pr122394.C | 20 ++++++++++++++++++++
- gcc/tree-ssa-phiopt.cc              |  6 ++----
- 2 files changed, 22 insertions(+), 4 deletions(-)
- create mode 100644 gcc/testsuite/g++.dg/opt/pr122394.C
-
-diff --git a/gcc/testsuite/g++.dg/opt/pr122394.C b/gcc/testsuite/g++.dg/opt/pr122394.C
-new file mode 100644
-index 000000000000..1f84bebd74c2
---- /dev/null
-+++ b/gcc/testsuite/g++.dg/opt/pr122394.C
-@@ -0,0 +1,20 @@
-+// PR tree-optimization/122394
-+// { dg-do compile { target c++23 } }
-+// { dg-options "-O1 -g" }
-+
-+#include <compare>
-+
-+struct A {
-+  friend auto operator<=> (A, A) = default;
-+  double a;
-+};
-+void foo ();
-+A b, c;
-+
-+void
-+bar ()
-+{
-+  bool d = c >= b;
-+  if (d)
-+    foo ();
-+}
-diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc
-index aaebae6b38c0..3e0ad9d3bb09 100644
---- a/gcc/tree-ssa-phiopt.cc
-+++ b/gcc/tree-ssa-phiopt.cc
-@@ -2995,10 +2995,8 @@ spaceship_replacement (basic_block cond_bb, basic_block middle_bb,
- 	      if (has_cast_debug_uses
- 		  || (HONOR_NANS (TREE_TYPE (lhs1)) && !is_cast))
- 		{
--		  tree temp3 = make_node (DEBUG_EXPR_DECL);
--		  DECL_ARTIFICIAL (temp3) = 1;
--		  TREE_TYPE (temp3) = TREE_TYPE (orig_use_lhs);
--		  SET_DECL_MODE (temp3, TYPE_MODE (type));
-+		  tree temp3
-+		    = build_debug_expr_decl (TREE_TYPE (orig_use_lhs));
- 		  if (has_cast_debug_uses)
- 		    t = fold_convert (TREE_TYPE (temp3), temp2);
- 		  else
--- 
-cgit 
-
diff --git a/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-01.patch b/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-01.patch
deleted file mode 100644
index d8ed99adb5..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-01.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-From b129ff0880c6d10e0379b46889d01255ee8d1f82 Mon Sep 17 00:00:00 2001
-From: Pietro Monteiro <pietro@sociotechnical.xyz>
-Date: Fri, 30 Jan 2026 20:22:49 -0500
-Subject: libitm: testsuite: don't include libstdc++ paths in test names
- [PR69018]
-
-Libitm C++ tests pass -B/full/path/to/build/libstc++/src/.libs on the
-options argument to dg-runtest and the libstdc++ include paths as
-the default-extra-options.  This causes 2 problems:
-
-1) If a test uses `dg-options' then the libstdc++ include paths are
-not passed to the compiler.
-
-2) The `-B/full/path/to/build/libstc++/src/.libs' gets added to the
-test name.  This makes comparing build done in different directories
-harder because the hardcoded full path.
-
-Stop passing options and default-extra-options to dg-runtest and move
-dealing with the path-releated flags to libitm_target_compile in
-libitm.exp, where they are added to additional_flags.
-
-Also change the FSF address to the website in the license text.
-
-libitm/ChangeLog:
-	PR libitm/69018
-	* testsuite/lib/libitm.exp (libitm_target_compile): Add
-	lang_include_flags and `-B${blddir}/${lang_library_paths}' to
-	additional_flags.
-	* testsuite/libitm.c++/c++.exp: Set lang_library_paths and lang_include_flags.
-
-Upstream-Status: Backport [https://gcc.gnu.org/cgit/gcc/patch/?id=b129ff0880c6d10e0379b46889d01255ee8d1f82]
-
-Signed-off-by: Pietro Monteiro <pietro@sociotechnical.xyz>
-Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
----
- libitm/testsuite/lib/libitm.exp     | 25 ++++++++++----
- libitm/testsuite/libitm.c++/c++.exp | 67 +++++++++++++++++--------------------
- 2 files changed, 48 insertions(+), 44 deletions(-)
-
-diff --git a/libitm/testsuite/lib/libitm.exp b/libitm/testsuite/lib/libitm.exp
-index 0b3301537cee..69a49906d338 100644
---- a/libitm/testsuite/lib/libitm.exp
-+++ b/libitm/testsuite/lib/libitm.exp
-@@ -9,8 +9,7 @@
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
- 
- # Damn dejagnu for not having proper library search paths for load_lib.
- # We have to explicitly load everything that gcc-dg.exp wants to load.
-@@ -193,14 +192,24 @@ proc libitm_target_compile { source dest type options } {
-     global gluefile wrap_flags
-     global ALWAYS_CFLAGS
-     global GCC_UNDER_TEST
--    global lang_test_file
--    global lang_library_path
-+    global lang_library_paths
-     global lang_link_flags
-+    global lang_include_flags
- 
--    if { [info exists lang_test_file] } {
--	if { $blddir != "" } {
-+    if { [info exists lang_include_flags] } {
-+	lappend options "additional_flags=${lang_include_flags}"
-+    }
-+
-+    if { [info exists lang_library_paths] } {
-+	foreach lang_library_path $lang_library_paths {
-+	    # targets that use lib[...].a%s in their specs need a -B option
-+	    # for uninstalled testing.
-+	    lappend options "additional_flags=-B${blddir}/${lang_library_path}"
- 	    lappend options "ldflags=-L${blddir}/${lang_library_path}"
- 	}
-+    }
-+
-+    if { [info exists lang_link_flags] } {
- 	lappend options "ldflags=${lang_link_flags}"
-     }
- 
-@@ -219,7 +228,9 @@ proc libitm_target_compile { source dest type options } {
- 	set options [concat "$ALWAYS_CFLAGS" $options]
-     }
- 
--    set options [dg-additional-files-options $options $source $dest $type]
-+    if { $source != "" } {
-+        set options [dg-additional-files-options $options $source $dest $type]
-+    }
- 
-     set result [target_compile $source $dest $type $options]
- 
-diff --git a/libitm/testsuite/libitm.c++/c++.exp b/libitm/testsuite/libitm.c++/c++.exp
-index a1ce7ce4062e..90f3058e7249 100644
---- a/libitm/testsuite/libitm.c++/c++.exp
-+++ b/libitm/testsuite/libitm.c++/c++.exp
-@@ -11,8 +11,7 @@
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
- 
- load_lib libitm-dg.exp
- load_gcc_lib gcc-dg.exp
-@@ -33,48 +32,42 @@ set blddir [lookfor_file [get_multilibs] libitm]
- 
- 
- if { $blddir != "" } {
--    # Look for a static libstdc++ first.
--    if [file exists "${blddir}/${lang_library_path}/libstdc++.a"] {
--	set lang_test_file "${lang_library_path}/libstdc++.a"
--	set lang_test_file_found 1
--	# We may have a shared only build, so look for a shared libstdc++.
--    } elseif [file exists "${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"] {
--	set lang_test_file "${lang_library_path}/libstdc++.${shlib_ext}"
--	set lang_test_file_found 1
--    } else {
--	puts "No libstdc++ library found, will not execute c++ tests"
-+    if { ![file exists "${blddir}/${lang_library_path}/libstdc++.a"]
-+	 && ![file exists "${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"] } {
-+	verbose -log "No libstdc++ library found, will not execute c++ tests"
-+	unset lang_library_path
-+	return
-     }
--} elseif { [info exists GXX_UNDER_TEST] } {
--    set lang_test_file_found 1
--    # Needs to exist for libitm.exp.
--    set lang_test_file ""
-+    lappend lang_library_paths ${lang_library_path}
-+} elseif { ![info exists GXX_UNDER_TEST] } {
-+    verbose -log "GXX_UNDER_TEST not defined, will not execute c++ tests"
-+    return
-+}
-+
-+# Gather a list of all tests.
-+set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]]
-+
-+if { $blddir != "" } {
-+    set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_path}"
- } else {
--    puts "GXX_UNDER_TEST not defined, will not execute c++ tests"
-+    set ld_library_path "$always_ld_library_path"
- }
- 
--if { $lang_test_file_found } {
--    # Gather a list of all tests.
--    set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]]
-+append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
-+set_ld_library_path_env_vars
- 
--    set stdcxxadder ""
--    if { $blddir != "" } {
--	set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_path}"
--	set stdcxxadder "-B ${blddir}/${lang_library_path}"
--    } else {
--	set ld_library_path "$always_ld_library_path"
--    }
--    append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
--    set_ld_library_path_env_vars
-+set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags"
-+if { [file exists $flags_file] } {
-+    set lang_include_flags [exec sh $flags_file --build-includes]
-+}
- 
--    set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags"
--    if { [file exists $flags_file] } {
--	set libstdcxx_includes [exec sh $flags_file --build-includes]
--    } else {
--	set libstdcxx_includes ""
--    }
-+# Main loop.
-+dg-runtest $tests "" ""
- 
--    # Main loop.
--    dg-runtest $tests $stdcxxadder $libstdcxx_includes
-+if { $blddir != "" } {
-+    unset lang_include_flags
-+    unset lang_library_path
-+    unset lang_library_paths
- }
- 
- # All done.
--- 
-cgit 
diff --git a/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-02.patch b/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-02.patch
deleted file mode 100644
index 67ed47ff51..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-02.patch
+++ /dev/null
@@ -1,220 +0,0 @@
-From 66ce317036f2eb5aeb96d5e4b9e468799d7566b6 Mon Sep 17 00:00:00 2001
-From: Pietro Monteiro <pietro@sociotechnical.xyz>
-Date: Wed, 11 Feb 2026 11:55:13 -0500
-Subject: libitm: Fix recent libitm testsuite regression [PR69018]
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The commit r16-7202-gb129ff0880c6d1 broke running libitm’s testsuite
-using combinations of options because it didn’t clean up all the
-global variables set in c++.exp.  Fix the regression by using g++ for
-the C++ tests and cleaning up the variables shared between C and C++
-tests.
-
-libitm/ChangeLog:
-	PR libitm/69018
-	* testsuite/lib/libitm.exp (libitm_init): Check
-	GXX_UNDER_TEST.  Add "${blddir}/.libs" to
-	always_ld_library_path if blddir is not empty.  Use
-	"-fdiagnostics-plain-output".  Don't set compiler to GCC_UNDER_TEST.
-	* testsuite/libitm.c++/c++.exp: If $blddir is not empty set
-	libstdc++_library_path, shlib_ext, lang_include_flags, add
-	"${blddir}/${lang_library_paths}" to ld_library_path.
-	Unset libstdc++_library_path and shlib_ext if we skip C++
-	tests and at the end of the test run.
-	* testsuite/libitm.c/c.exp: Update the FSF address to the
-	website in the license text. Unset lang_library_paths and
-	lang_include_flags.  Set the compiler to $GCC_UNDER_TEST.
-
-Upstream-Status: Backport [https://gcc.gnu.org/cgit/gcc/patch/?id=66ce317036f2eb5aeb96d5e4b9e468799d7566b6]
-
-Co-authored-by: Jakub Jelinek  <jakub@redhat.com>
-Signed-off-by: Pietro Monteiro <pietro@sociotechnical.xyz>
-Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
----
- libitm/testsuite/lib/libitm.exp     | 21 +++++++++++++++----
- libitm/testsuite/libitm.c++/c++.exp | 42 ++++++++++++++-----------------------
- libitm/testsuite/libitm.c/c.exp     | 14 ++++++-------
- 3 files changed, 40 insertions(+), 37 deletions(-)
-
-diff --git a/libitm/testsuite/lib/libitm.exp b/libitm/testsuite/lib/libitm.exp
-index 69a49906d338..2de0f6cbf158 100644
---- a/libitm/testsuite/lib/libitm.exp
-+++ b/libitm/testsuite/lib/libitm.exp
-@@ -79,7 +79,7 @@ proc libitm_init { args } {
-     global ALWAYS_CFLAGS
-     global CFLAGS
-     global TOOL_EXECUTABLE TOOL_OPTIONS
--    global GCC_UNDER_TEST
-+    global GCC_UNDER_TEST GXX_UNDER_TEST
-     global TESTING_IN_BUILD_TREE
-     global target_triplet
-     global always_ld_library_path
-@@ -97,6 +97,17 @@ proc libitm_init { args } {
- 	} else {
- 	    set GCC_UNDER_TEST "[find_gcc]"
- 	}
-+	# Only if we're guessing 'GCC_UNDER_TEST', we're also going to guess
-+	# 'GXX_UNDER_TEST'
-+	if ![info exists GXX_UNDER_TEST] then {
-+	    if [info exists TOOL_EXECUTABLE] {
-+		set GXX_UNDER_TEST $TOOL_EXECUTABLE
-+	    } else {
-+		set GXX_UNDER_TEST "[find_g++]"
-+	    }
-+	} else {
-+	    error "GXX_UNDER_TEST set but not GCC_UNDER_TEST"
-+	}
-     }
- 
-     if ![info exists tmpdir] {
-@@ -119,7 +130,7 @@ proc libitm_init { args } {
-     }
- 
-     # Compute what needs to be put into LD_LIBRARY_PATH
--    set always_ld_library_path ".:${blddir}/.libs"
-+    set always_ld_library_path "."
- 
-     # Compute what needs to be added to the existing LD_LIBRARY_PATH.
-     if {$gccdir != ""} {
-@@ -150,6 +161,8 @@ proc libitm_init { args } {
- 	lappend ALWAYS_CFLAGS "additional_flags=-B${blddir}/"
- 	lappend ALWAYS_CFLAGS "additional_flags=-I${blddir}"
- 	lappend ALWAYS_CFLAGS "ldflags=-L${blddir}/.libs"
-+
-+	append always_ld_library_path ":${blddir}/.libs"
-     }
-     lappend ALWAYS_CFLAGS "additional_flags=-I${srcdir}/.."
- 
-@@ -179,7 +192,8 @@ proc libitm_init { args } {
-     # Turn on transactional memory support.
-     lappend ALWAYS_CFLAGS "additional_flags=-fgnu-tm"
- 
--    lappend ALWAYS_CFLAGS "additional_flags=-fdiagnostics-color=never"
-+    # Disable caret, color, URL diagnostics
-+    lappend ALWAYS_CFLAGS "additional_flags=-fdiagnostics-plain-output"
- }
- 
- #
-@@ -220,7 +234,6 @@ proc libitm_target_compile { source dest type options } {
- 
-     lappend options "additional_flags=[libio_include_flags]"
-     lappend options "timeout=[timeout_value]"
--    lappend options "compiler=$GCC_UNDER_TEST"
- 
-     set options [concat $libitm_compile_options $options]
- 
-diff --git a/libitm/testsuite/libitm.c++/c++.exp b/libitm/testsuite/libitm.c++/c++.exp
-index 90f3058e7249..c24dc830bcc5 100644
---- a/libitm/testsuite/libitm.c++/c++.exp
-+++ b/libitm/testsuite/libitm.c++/c++.exp
-@@ -16,39 +16,33 @@
- load_lib libitm-dg.exp
- load_gcc_lib gcc-dg.exp
- 
--global shlib_ext
--
--set shlib_ext [get_shlib_extension]
--# The C++ tests should be linked with g++, which defaults to -shared-libgcc.
--# Doing that is currently too intrusive, so hardcode here.
--set lang_link_flags "-shared-libgcc -lstdc++"
--set lang_test_file_found 0
--set lang_library_path "../libstdc++-v3/src/.libs"
--
--# Initialize dg.
--dg-init
--
--set blddir [lookfor_file [get_multilibs] libitm]
--
--
- if { $blddir != "" } {
--    if { ![file exists "${blddir}/${lang_library_path}/libstdc++.a"]
--	 && ![file exists "${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"] } {
-+    set libstdc++_library_path "../libstdc++-v3/src/.libs"
-+    set shlib_ext [get_shlib_extension]
-+    if { ![file exists "${blddir}/${libstdc++_library_path}/libstdc++.a"]
-+	 && ![file exists "${blddir}/${libstdc++_library_path}/libstdc++.${shlib_ext}"] } {
- 	verbose -log "No libstdc++ library found, will not execute c++ tests"
--	unset lang_library_path
-+	unset libstdc++_library_path
-+	unset shlib_ext
- 	return
-     }
--    lappend lang_library_paths ${lang_library_path}
-+    lappend lang_library_paths ${libstdc++_library_path}
- } elseif { ![info exists GXX_UNDER_TEST] } {
-     verbose -log "GXX_UNDER_TEST not defined, will not execute c++ tests"
-     return
- }
- 
-+lappend ALWAYS_CFLAGS "compiler=$GXX_UNDER_TEST"
-+
-+# Initialize dg.
-+dg-init
-+
- # Gather a list of all tests.
- set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]]
- 
- if { $blddir != "" } {
--    set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_path}"
-+    set lang_include_flags [exec sh ${blddir}/../libstdc++-v3/scripts/testsuite_flags --build-includes]
-+    set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_paths}"
- } else {
-     set ld_library_path "$always_ld_library_path"
- }
-@@ -56,18 +50,14 @@ if { $blddir != "" } {
- append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
- set_ld_library_path_env_vars
- 
--set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags"
--if { [file exists $flags_file] } {
--    set lang_include_flags [exec sh $flags_file --build-includes]
--}
--
- # Main loop.
- dg-runtest $tests "" ""
- 
- if { $blddir != "" } {
-     unset lang_include_flags
--    unset lang_library_path
-+    unset libstdc++_library_path
-     unset lang_library_paths
-+    unset shlib_ext
- }
- 
- # All done.
-diff --git a/libitm/testsuite/libitm.c/c.exp b/libitm/testsuite/libitm.c/c.exp
-index daa71427d64c..7a697b870932 100644
---- a/libitm/testsuite/libitm.c/c.exp
-+++ b/libitm/testsuite/libitm.c/c.exp
-@@ -9,20 +9,20 @@
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
- 
--if [info exists lang_library_path] then {
--    unset lang_library_path
--    unset lang_link_flags
-+if [info exists lang_library_paths] then {
-+    unset lang_library_paths
- }
--if [info exists lang_test_file] then {
--    unset lang_test_file
-+if [info exists lang_include_flags] then {
-+    unset lang_include_flags
- }
- 
- load_lib libitm-dg.exp
- load_gcc_lib gcc-dg.exp
- 
-+lappend ALWAYS_CFLAGS "compiler=$GCC_UNDER_TEST"
-+
- # If a testcase doesn't have special options, use these.
- if ![info exists DEFAULT_CFLAGS] then {
-     set DEFAULT_CFLAGS "-O2"
--- 
-cgit 
diff --git a/meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch b/meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
deleted file mode 100644
index 431facb011..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
+++ /dev/null
@@ -1,257 +0,0 @@
-From 0ffe3c9af4e5d5468df742512b6e930fe7039230 Mon Sep 17 00:00:00 2001
-From: Jakub Jelinek <jakub@redhat.com>
-Date: Fri, 21 Nov 2025 16:25:58 +0100
-Subject: [PATCH] libcody: Make it buildable by C++11 to C++26
-
-The following builds with -std=c++11 and c++14 and c++17 and c++20 and c++23
-and c++26.
-
-I see the u8 string literals are mixed e.g. with strerror, so in
--fexec-charset=IBM1047 there will still be garbage, so am not 100% sure if
-the u8 literals everywhere are worth it either.
-
-2025-11-21  Jakub Jelinek  <jakub@redhat.com>
-
-	* cody.hh (S2C): For __cpp_char8_t >= 201811 use char8_t instead of
-	char in argument type.
-	(MessageBuffer::Space): Revert 2025-11-15 change.
-	(MessageBuffer::Append): For __cpp_char8_t >= 201811 add overload
-	with char8_t const * type of first argument.
-	(Packet::Packet): Similarly for first argument.
-	* client.cc (CommunicationError, Client::ProcessResponse,
-	Client::Connect, ConnectResponse, PathnameResponse, OKResponse,
-	IncludeTranslateResponse): Cast u8 string literals to (const char *)
-	where needed.
-	* server.cc (Server::ProcessRequests, ConnectRequest): Likewise.
-
-Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
-Upstream-Status: Backport [07a767c7a50d1daae8ef7d4aba73fe53ad40c0b7]
----
- libcody/client.cc | 36 +++++++++++++++++++-----------------
- libcody/cody.hh   | 22 ++++++++++++++++++++++
- libcody/server.cc | 28 ++++++++++++++--------------
- 3 files changed, 55 insertions(+), 31 deletions(-)
-
-diff --git a/libcody/client.cc b/libcody/client.cc
-index ae69d190cb77..147fecdbe500 100644
---- a/libcody/client.cc
-+++ b/libcody/client.cc
-@@ -97,7 +97,7 @@ int Client::CommunicateWithServer ()
- 
- static Packet CommunicationError (int err)
- {
--  std::string e {u8"communication error:"};
-+  std::string e {(const char *) u8"communication error:"};
-   e.append (strerror (err));
- 
-   return Packet (Client::PC_ERROR, std::move (e));
-@@ -110,33 +110,34 @@ Packet Client::ProcessResponse (std::vector<std::string> &words,
-     {
-       if (e == EINVAL)
- 	{
--	  std::string msg (u8"malformed string '");
-+	  std::string msg ((const char *) u8"malformed string '");
- 	  msg.append (words[0]);
--	  msg.append (u8"'");
-+	  msg.append ((const char *) u8"'");
- 	  return Packet (Client::PC_ERROR, std::move (msg));
- 	}
-       else
--	return Packet (Client::PC_ERROR, u8"missing response");
-+	return Packet (Client::PC_ERROR, (const char *) u8"missing response");
-     }
- 
-   Assert (!words.empty ());
--  if (words[0] == u8"ERROR")
-+  if (words[0] == (const char *) u8"ERROR")
-     return Packet (Client::PC_ERROR,
--		   words.size () == 2 ? words[1]: u8"malformed error response");
-+		   words.size () == 2 ? words[1]
-+		   : (const char *) u8"malformed error response");
- 
-   if (isLast && !read.IsAtEnd ())
-     return Packet (Client::PC_ERROR,
--		   std::string (u8"unexpected extra response"));
-+		   std::string ((const char *) u8"unexpected extra response"));
- 
-   Assert (code < Detail::RC_HWM);
-   Packet result (responseTable[code] (words));
-   result.SetRequest (code);
-   if (result.GetCode () == Client::PC_ERROR && result.GetString ().empty ())
-     {
--      std::string msg {u8"malformed response '"};
-+      std::string msg {(const char *) u8"malformed response '"};
- 
-       read.LexedLine (msg);
--      msg.append (u8"'");
-+      msg.append ((const char *) u8"'");
-       result.GetString () = std::move (msg);
-     }
-   else if (result.GetCode () == Client::PC_CONNECT)
-@@ -199,7 +200,7 @@ Packet Client::Connect (char const *agent, char const *ident,
- 			  size_t alen, size_t ilen)
- {
-   write.BeginLine ();
--  write.AppendWord (u8"HELLO");
-+  write.AppendWord ((const char *) u8"HELLO");
-   write.AppendInteger (Version);
-   write.AppendWord (agent, true, alen);
-   write.AppendWord (ident, true, ilen);
-@@ -211,7 +212,8 @@ Packet Client::Connect (char const *agent, char const *ident,
- // HELLO $version $agent [$flags]
- Packet ConnectResponse (std::vector<std::string> &words)
- {
--  if (words[0] == u8"HELLO" && (words.size () == 3 || words.size () == 4))
-+  if (words[0] == (const char *) u8"HELLO"
-+      && (words.size () == 3 || words.size () == 4))
-     {
-       char *eptr;
-       unsigned long val = strtoul (words[1].c_str (), &eptr, 10);
-@@ -247,7 +249,7 @@ Packet Client::ModuleRepo ()
- // PATHNAME $dir | ERROR
- Packet PathnameResponse (std::vector<std::string> &words)
- {
--  if (words[0] == u8"PATHNAME" && words.size () == 2)
-+  if (words[0] == (const char *) u8"PATHNAME" && words.size () == 2)
-     return Packet (Client::PC_PATHNAME, std::move (words[1]));
- 
-   return Packet (Client::PC_ERROR, u8"");
-@@ -256,7 +258,7 @@ Packet PathnameResponse (std::vector<std::string> &words)
- // OK or ERROR
- Packet OKResponse (std::vector<std::string> &words)
- {
--  if (words[0] == u8"OK")
-+  if (words[0] == (const char *) u8"OK")
-     return Packet (Client::PC_OK);
-   else
-     return Packet (Client::PC_ERROR,
-@@ -319,11 +321,11 @@ Packet Client::IncludeTranslate (char const *include, Flags flags, size_t ilen)
- // PATHNAME $cmifile
- Packet IncludeTranslateResponse (std::vector<std::string> &words)
- {
--  if (words[0] == u8"BOOL" && words.size () == 2)
-+  if (words[0] == (const char *) u8"BOOL" && words.size () == 2)
-     {
--      if (words[1] == u8"FALSE")
--	return Packet (Client::PC_BOOL, 0);
--      else if (words[1] == u8"TRUE")
-+      if (words[1] == (const char *) u8"FALSE")
-+	return Packet (Client::PC_BOOL);
-+      else if (words[1] == (const char *) u8"TRUE")
- 	return Packet (Client::PC_BOOL, 1);
-       else
- 	return Packet (Client::PC_ERROR, u8"");
-diff --git a/libcody/cody.hh b/libcody/cody.hh
-index 789ce9e70b75..93bce93aa94d 100644
---- a/libcody/cody.hh
-+++ b/libcody/cody.hh
-@@ -47,12 +47,21 @@ namespace Detail  {
- 
- // C++11 doesn't have utf8 character literals :(
- 
-+#if __cpp_char8_t >= 201811
-+template<unsigned I>
-+constexpr char S2C (char8_t const (&s)[I])
-+{
-+  static_assert (I == 2, "only single octet strings may be converted");
-+  return s[0];
-+}
-+#else
- template<unsigned I>
- constexpr char S2C (char const (&s)[I])
- {
-   static_assert (I == 2, "only single octet strings may be converted");
-   return s[0];
- }
-+#endif
- 
- /// Internal buffering class.  Used to concatenate outgoing messages
- /// and Lex incoming ones.
-@@ -123,6 +132,13 @@ public:
-       Space ();
-     Append (str, maybe_quote, len);
-   }
-+#if __cpp_char8_t >= 201811
-+  void AppendWord (char8_t const *str, bool maybe_quote = false,
-+		   size_t len = ~size_t (0))
-+  {
-+    AppendWord ((const char *) str, maybe_quote, len);
-+  }
-+#endif
-   /// Add a word as with AppendWord
-   /// @param str the string to append
-   /// @param maybe_quote string might need quoting, as for Append
-@@ -264,6 +280,12 @@ public:
-     : string (s), cat (STRING), code (c)
-   {
-   }
-+#if __cpp_char8_t >= 201811
-+  Packet (unsigned c, const char8_t *s)
-+    : string ((const char *) s), cat (STRING), code (c)
-+  {
-+  }
-+#endif
-   Packet (unsigned c, std::vector<std::string> &&v)
-     : vector (std::move (v)), cat (VECTOR), code (c)
-   {
-diff --git a/libcody/server.cc b/libcody/server.cc
-index e2fa069bb933..c18469fae843 100644
---- a/libcody/server.cc
-+++ b/libcody/server.cc
-@@ -36,12 +36,12 @@ static RequestPair
-   const requestTable[Detail::RC_HWM] =
-   {
-     // Same order as enum RequestCode
--    RequestPair {u8"HELLO", nullptr},
--    RequestPair {u8"MODULE-REPO", ModuleRepoRequest},
--    RequestPair {u8"MODULE-EXPORT", ModuleExportRequest},
--    RequestPair {u8"MODULE-IMPORT", ModuleImportRequest},
--    RequestPair {u8"MODULE-COMPILED", ModuleCompiledRequest},
--    RequestPair {u8"INCLUDE-TRANSLATE", IncludeTranslateRequest},
-+    RequestPair {(const char *) u8"HELLO", nullptr},
-+    RequestPair {(const char *) u8"MODULE-REPO", ModuleRepoRequest},
-+    RequestPair {(const char *) u8"MODULE-EXPORT", ModuleExportRequest},
-+    RequestPair {(const char *) u8"MODULE-IMPORT", ModuleImportRequest},
-+    RequestPair {(const char *) u8"MODULE-COMPILED", ModuleCompiledRequest},
-+    RequestPair {(const char *) u8"INCLUDE-TRANSLATE", IncludeTranslateRequest},
-   };
- }
- 
-@@ -135,21 +135,21 @@ void Server::ProcessRequests (void)
- 	  std::string msg;
- 
- 	  if (err > 0)
--	    msg = u8"error processing '";
-+	    msg = (const char *) u8"error processing '";
- 	  else if (ix >= Detail::RC_HWM)
--	    msg = u8"unrecognized '";
-+	    msg = (const char *) u8"unrecognized '";
- 	  else if (IsConnected () && ix == Detail::RC_CONNECT)
--	    msg = u8"already connected '";
-+	    msg = (const char *) u8"already connected '";
- 	  else if (!IsConnected () && ix != Detail::RC_CONNECT)
--	    msg = u8"not connected '";
-+	    msg = (const char *) u8"not connected '";
- 	  else
--	    msg = u8"malformed '";
-+	    msg = (const char *) u8"malformed '";
- 
- 	  read.LexedLine (msg);
--	  msg.append (u8"'");
-+	  msg.append ((const char *) u8"'");
- 	  if (err > 0)
- 	    {
--	      msg.append (u8" ");
-+	      msg.append ((const char *) u8" ");
- 	      msg.append (strerror (err));
- 	    }
- 	  resolver->ErrorResponse (this, std::move (msg));
-@@ -176,7 +176,7 @@ Resolver *ConnectRequest (Server *s, Resolver *r,
-     return nullptr;
- 
-   if (words.size () == 3)
--    words.emplace_back (u8"");
-+    words.emplace_back ((const char *) u8"");
-   unsigned version = ParseUnsigned (words[1]);
-   if (version == ~0u)
-     return nullptr;
diff --git a/meta/recipes-devtools/gcc/gcc_15.2.bb b/meta/recipes-devtools/gcc/gcc_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc_15.2.bb
rename to meta/recipes-devtools/gcc/gcc_16.1.bb
diff --git a/meta/recipes-devtools/gcc/libgcc-initial_15.2.bb b/meta/recipes-devtools/gcc/libgcc-initial_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/libgcc-initial_15.2.bb
rename to meta/recipes-devtools/gcc/libgcc-initial_16.1.bb
diff --git a/meta/recipes-devtools/gcc/libgcc_15.2.bb b/meta/recipes-devtools/gcc/libgcc_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/libgcc_15.2.bb
rename to meta/recipes-devtools/gcc/libgcc_16.1.bb
diff --git a/meta/recipes-devtools/gcc/libgfortran_15.2.bb b/meta/recipes-devtools/gcc/libgfortran_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/libgfortran_15.2.bb
rename to meta/recipes-devtools/gcc/libgfortran_16.1.bb
