aboutsummaryrefslogtreecommitdiff
path: root/packages/gcc/14.2.0
diff options
context:
space:
mode:
Diffstat (limited to 'packages/gcc/14.2.0')
-rw-r--r--packages/gcc/14.2.0/0000-libtool-leave-framework-alone.patch18
-rw-r--r--packages/gcc/14.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch14
-rw-r--r--packages/gcc/14.2.0/0002-arm-softfloat-libgcc.patch31
-rw-r--r--packages/gcc/14.2.0/0003-libgcc-disable-split-stack-nothreads.patch17
-rw-r--r--packages/gcc/14.2.0/0004-Remove-use-of-include_next-from-c-headers.patch262
-rw-r--r--packages/gcc/14.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch134
-rw-r--r--packages/gcc/14.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch95
-rw-r--r--packages/gcc/14.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch37
-rw-r--r--packages/gcc/14.2.0/0008-Support-picolibc-targets.patch33
-rw-r--r--packages/gcc/14.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch60
-rw-r--r--packages/gcc/14.2.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch30
-rw-r--r--packages/gcc/14.2.0/0011-aarch64-Fix-invalid-nested-subregs-PR115464.patch139
-rw-r--r--packages/gcc/14.2.0/0012-aarch64-Use-force_subreg-in-more-places.patch114
-rw-r--r--packages/gcc/14.2.0/0013-aarch64-Add-some-uses-of-force_lowpart_subreg.patch167
-rw-r--r--packages/gcc/14.2.0/0014-Add-force_lowpart_subreg.patch121
-rw-r--r--packages/gcc/14.2.0/0015-Make-more-use-of-force_subreg.patch194
-rw-r--r--packages/gcc/14.2.0/0016-Revert-one-of-the-force_subreg-changes.patch46
-rw-r--r--packages/gcc/14.2.0/chksum8
-rw-r--r--packages/gcc/14.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch127
-rw-r--r--packages/gcc/14.2.0/version.desc0
20 files changed, 0 insertions, 1647 deletions
diff --git a/packages/gcc/14.2.0/0000-libtool-leave-framework-alone.patch b/packages/gcc/14.2.0/0000-libtool-leave-framework-alone.patch
deleted file mode 100644
index 1a86e415..00000000
--- a/packages/gcc/14.2.0/0000-libtool-leave-framework-alone.patch
+++ /dev/null
@@ -1,18 +0,0 @@
----
- libtool-ldflags | 5 +++++
- 1 file changed, 5 insertions(+)
-
---- a/libtool-ldflags
-+++ b/libtool-ldflags
-@@ -36,6 +36,11 @@
- for arg
- do
- case $arg in
-+ -framework)
-+ # libtool handles this option. It should not be prefixed with
-+ # -Xcompiler, as that would split it from the argument that
-+ # follows.
-+ ;;
- -f*|--*|-static-lib*|-shared-lib*|-B*)
- # Libtool does not ascribe any special meaning options
- # that begin with -f or with a double-dash. So, it will
diff --git a/packages/gcc/14.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch b/packages/gcc/14.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch
deleted file mode 100644
index 5f9a07a2..00000000
--- a/packages/gcc/14.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch
+++ /dev/null
@@ -1,14 +0,0 @@
----
- libcc1/connection.cc | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/libcc1/connection.cc
-+++ b/libcc1/connection.cc
-@@ -21,6 +21,7 @@
- #include <string>
- #include <unistd.h>
- #include <sys/types.h>
-+#include <sys/select.h>
- #include <string.h>
- #include <errno.h>
- #include "marshall.hh"
diff --git a/packages/gcc/14.2.0/0002-arm-softfloat-libgcc.patch b/packages/gcc/14.2.0/0002-arm-softfloat-libgcc.patch
deleted file mode 100644
index d9800365..00000000
--- a/packages/gcc/14.2.0/0002-arm-softfloat-libgcc.patch
+++ /dev/null
@@ -1,31 +0,0 @@
----
- gcc/config/arm/linux-elf.h | 2 +-
- libgcc/config/arm/t-linux | 7 ++++++-
- 2 files changed, 7 insertions(+), 2 deletions(-)
-
---- a/gcc/config/arm/linux-elf.h
-+++ b/gcc/config/arm/linux-elf.h
-@@ -58,7 +58,7 @@
- %{shared:-lc} \
- %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
-
--#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
-+#define LIBGCC_SPEC "-lgcc"
-
- #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-
---- a/libgcc/config/arm/t-linux
-+++ b/libgcc/config/arm/t-linux
-@@ -1,6 +1,11 @@
- LIB1ASMSRC = arm/lib1funcs.S
- LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
-- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3
-+ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \
-+ _arm_addsubdf3 _arm_addsubsf3 \
-+ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \
-+ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \
-+ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \
-+ _arm_fixsfsi _arm_fixunssfsi
-
- # Just for these, we omit the frame pointer since it makes such a big
- # difference.
diff --git a/packages/gcc/14.2.0/0003-libgcc-disable-split-stack-nothreads.patch b/packages/gcc/14.2.0/0003-libgcc-disable-split-stack-nothreads.patch
deleted file mode 100644
index df91a9ff..00000000
--- a/packages/gcc/14.2.0/0003-libgcc-disable-split-stack-nothreads.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-disable split-stack for non-thread builds
-
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
-
----
- libgcc/config/t-stack | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/libgcc/config/t-stack
-+++ b/libgcc/config/t-stack
-@@ -1,4 +1,6 @@
- # Makefile fragment to provide generic support for -fsplit-stack.
- # This should be used in config.host for any host which supports
- # -fsplit-stack.
-+ifeq ($(enable_threads),yes)
- LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c
-+endif
diff --git a/packages/gcc/14.2.0/0004-Remove-use-of-include_next-from-c-headers.patch b/packages/gcc/14.2.0/0004-Remove-use-of-include_next-from-c-headers.patch
deleted file mode 100644
index 429d3bd3..00000000
--- a/packages/gcc/14.2.0/0004-Remove-use-of-include_next-from-c-headers.patch
+++ /dev/null
@@ -1,262 +0,0 @@
-From fc4aaba8a3b8fe7815e103cc20f2a36d5de7e8ab Mon Sep 17 00:00:00 2001
-From: Keith Packard <keithp@keithp.com>
-Date: Sun, 24 Jan 2021 14:20:33 -0800
-Subject: [PATCH] Remove use of include_next from c++ headers
-
-Using include_next bypasses the default header search path and lets
-files later in the include path take priority over earlier files.
-
-This makes replacing libc impossible as the default libc headers will
-occur after the libstdc++ headers, and so be picked up in place of
-headers inserted at the begining of the search path or appended to the
-end of the search path.
-
-Using include_next is a hack to work-around broken combinations of
-libraries, and is not necessary in a well constructed toolchain.
-
-Signed-off-by: Keith Packard <keithp@keithp.com>
----
- libstdc++-v3/include/bits/std_abs.h | 4 ++--
- libstdc++-v3/include/c/cassert | 2 +-
- libstdc++-v3/include/c/cctype | 2 +-
- libstdc++-v3/include/c/cerrno | 2 +-
- libstdc++-v3/include/c/cfloat | 2 +-
- libstdc++-v3/include/c/climits | 2 +-
- libstdc++-v3/include/c/clocale | 2 +-
- libstdc++-v3/include/c/cmath | 2 +-
- libstdc++-v3/include/c/csetjmp | 2 +-
- libstdc++-v3/include/c/csignal | 2 +-
- libstdc++-v3/include/c/cstdarg | 2 +-
- libstdc++-v3/include/c/cstddef | 2 +-
- libstdc++-v3/include/c/cstdio | 2 +-
- libstdc++-v3/include/c/cstdlib | 2 +-
- libstdc++-v3/include/c/cstring | 2 +-
- libstdc++-v3/include/c/ctime | 2 +-
- libstdc++-v3/include/c/cuchar | 2 +-
- libstdc++-v3/include/c/cwchar | 2 +-
- libstdc++-v3/include/c/cwctype | 2 +-
- libstdc++-v3/include/c_global/cmath | 2 +-
- libstdc++-v3/include/c_global/cstdlib | 2 +-
- 21 files changed, 22 insertions(+), 22 deletions(-)
-
---- a/libstdc++-v3/include/bits/std_abs.h
-+++ b/libstdc++-v3/include/bits/std_abs.h
-@@ -35,9 +35,9 @@
- #include <bits/c++config.h>
-
- #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
--#include_next <stdlib.h>
-+#include <stdlib.h>
- #ifdef __CORRECT_ISO_CPP_MATH_H_PROTO
--# include_next <math.h>
-+# include <math.h>
- #endif
- #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
-
---- a/libstdc++-v3/include/c/cassert
-+++ b/libstdc++-v3/include/c/cassert
-@@ -31,4 +31,4 @@
- #pragma GCC system_header
-
- #include <bits/c++config.h>
--#include_next <assert.h>
-+#include <assert.h>
---- a/libstdc++-v3/include/c/cctype
-+++ b/libstdc++-v3/include/c/cctype
-@@ -31,6 +31,6 @@
-
- #pragma GCC system_header
-
--#include_next <ctype.h>
-+#include <ctype.h>
-
- #endif
---- a/libstdc++-v3/include/c/cerrno
-+++ b/libstdc++-v3/include/c/cerrno
-@@ -41,7 +41,7 @@
- #pragma GCC system_header
-
- #include <bits/c++config.h>
--#include_next <errno.h>
-+#include <errno.h>
-
- // Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998
- #ifndef errno
---- a/libstdc++-v3/include/c/cfloat
-+++ b/libstdc++-v3/include/c/cfloat
-@@ -32,6 +32,6 @@
- #pragma GCC system_header
-
- #include <bits/c++config.h>
--#include_next <float.h>
-+#include <float.h>
-
- #endif
---- a/libstdc++-v3/include/c/climits
-+++ b/libstdc++-v3/include/c/climits
-@@ -32,6 +32,6 @@
- #pragma GCC system_header
-
- #include <bits/c++config.h>
--#include_next <limits.h>
-+#include <limits.h>
-
- #endif
---- a/libstdc++-v3/include/c/clocale
-+++ b/libstdc++-v3/include/c/clocale
-@@ -31,6 +31,6 @@
-
- #pragma GCC system_header
-
--#include_next <locale.h>
-+#include <locale.h>
-
- #endif
---- a/libstdc++-v3/include/c/cmath
-+++ b/libstdc++-v3/include/c/cmath
-@@ -33,7 +33,7 @@
-
- #include <bits/c++config.h>
-
--#include_next <math.h>
-+#include <math.h>
-
- // Get rid of those macros defined in <math.h> in lieu of real functions.
- #undef abs
---- a/libstdc++-v3/include/c/csetjmp
-+++ b/libstdc++-v3/include/c/csetjmp
-@@ -31,7 +31,7 @@
-
- #pragma GCC system_header
-
--#include_next <setjmp.h>
-+#include <setjmp.h>
-
- // Get rid of those macros defined in <setjmp.h> in lieu of real functions.
- #undef longjmp
---- a/libstdc++-v3/include/c/csignal
-+++ b/libstdc++-v3/include/c/csignal
-@@ -31,6 +31,6 @@
-
- #pragma GCC system_header
-
--#include_next <signal.h>
-+#include <signal.h>
-
- #endif
---- a/libstdc++-v3/include/c/cstdarg
-+++ b/libstdc++-v3/include/c/cstdarg
-@@ -32,6 +32,6 @@
- #pragma GCC system_header
-
- #undef __need___va_list
--#include_next <stdarg.h>
-+#include <stdarg.h>
-
- #endif
---- a/libstdc++-v3/include/c/cstddef
-+++ b/libstdc++-v3/include/c/cstddef
-@@ -35,6 +35,6 @@
- #define __need_ptrdiff_t
- #define __need_NULL
- #define __need_offsetof
--#include_next <stddef.h>
-+#include <stddef.h>
-
- #endif
---- a/libstdc++-v3/include/c/cstdio
-+++ b/libstdc++-v3/include/c/cstdio
-@@ -31,7 +31,7 @@
-
- #pragma GCC system_header
-
--#include_next <stdio.h>
-+#include <stdio.h>
-
- // Get rid of those macros defined in <stdio.h> in lieu of real functions.
- #undef clearerr
---- a/libstdc++-v3/include/c/cstdlib
-+++ b/libstdc++-v3/include/c/cstdlib
-@@ -31,6 +31,6 @@
-
- #pragma GCC system_header
-
--#include_next <stdlib.h>
-+#include <stdlib.h>
-
- #endif
---- a/libstdc++-v3/include/c/cstring
-+++ b/libstdc++-v3/include/c/cstring
-@@ -31,6 +31,6 @@
-
- #pragma GCC system_header
-
--#include_next <string.h>
-+#include <string.h>
-
- #endif
---- a/libstdc++-v3/include/c/ctime
-+++ b/libstdc++-v3/include/c/ctime
-@@ -31,6 +31,6 @@
-
- #pragma GCC system_header
-
--#include_next <time.h>
-+#include <time.h>
-
- #endif
---- a/libstdc++-v3/include/c/cuchar
-+++ b/libstdc++-v3/include/c/cuchar
-@@ -39,7 +39,7 @@
- #include <cwchar>
-
- #if _GLIBCXX_USE_C11_UCHAR_CXX11
--# include_next <uchar.h>
-+# include <uchar.h>
- #endif
-
- #endif // C++11
---- a/libstdc++-v3/include/c/cwchar
-+++ b/libstdc++-v3/include/c/cwchar
-@@ -36,7 +36,7 @@
- #include <ctime>
-
- #if _GLIBCXX_HAVE_WCHAR_H
--#include_next <wchar.h>
-+#include <wchar.h>
- #endif
-
- // Need to do a bit of trickery here with mbstate_t as char_traits
---- a/libstdc++-v3/include/c/cwctype
-+++ b/libstdc++-v3/include/c/cwctype
-@@ -34,7 +34,7 @@
- #include <bits/c++config.h>
-
- #if _GLIBCXX_HAVE_WCTYPE_H
--#include_next <wctype.h>
-+#include <wctype.h>
- #endif
-
- #endif
---- a/libstdc++-v3/include/c_global/cmath
-+++ b/libstdc++-v3/include/c_global/cmath
-@@ -44,7 +44,7 @@
- #include <bits/cpp_type_traits.h>
- #include <ext/type_traits.h>
- #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
--#include_next <math.h>
-+#include <math.h>
- #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
- #include <bits/std_abs.h>
-
---- a/libstdc++-v3/include/c_global/cstdlib
-+++ b/libstdc++-v3/include/c_global/cstdlib
-@@ -76,7 +76,7 @@
- // Need to ensure this finds the C library's <stdlib.h> not a libstdc++
- // wrapper that might already be installed later in the include search path.
- #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
--#include_next <stdlib.h>
-+#include <stdlib.h>
- #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
- #include <bits/std_abs.h>
-
diff --git a/packages/gcc/14.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch b/packages/gcc/14.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch
deleted file mode 100644
index 9a7a2a85..00000000
--- a/packages/gcc/14.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From ffb10db6fa080e4c225e16928aec052d4c0baa95 Mon Sep 17 00:00:00 2001
-From: Keith Packard <keithp@keithp.com>
-Date: Fri, 2 Sep 2022 23:07:05 -0700
-Subject: [PATCH] Allow default libc to be specified to configure
-
-The default C library is normally computed based on the target
-triplet. However, for embedded systems, it can be useful to leave the
-triplet alone while changing which C library is used by default. Other
-C libraries may still be available on the system so the compiler and
-can be used by specifying suitable include and library paths at build
-time.
-
-If an unknown --with-default-libc= value is provided, emit an error
-and stop.
-
-Signed-off-by: Keith Packard <keithp@keithp.com>
----
- gcc/config.gcc | 48 ++++++++++++++++++++++++++++++++++++++++--------
- gcc/configure.ac | 4 ++++
- 2 files changed, 44 insertions(+), 8 deletions(-)
-
---- a/gcc/config.gcc
-+++ b/gcc/config.gcc
-@@ -695,6 +695,8 @@
- # Common C libraries.
- tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
-
-+default_libc=""
-+
- # 32-bit x86 processors supported by --with-arch=. Each processor
- # MUST be separated by exactly one space.
- x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
-@@ -911,16 +913,16 @@
- esac
- case $target in
- *-*-*android*)
-- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
-+ default_libc=LIBC_BIONIC
- ;;
- *-*-*uclibc* | *-*-uclinuxfdpiceabi)
-- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
-+ default_libc=LIBC_UCLIBC
- ;;
- *-*-*musl*)
-- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
-+ default_libc=LIBC_MUSL
- ;;
- *)
-- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
-+ default_libc=LIBC_GLIBC
- ;;
- esac
- # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
-@@ -1035,7 +1037,8 @@
- case ${enable_threads} in
- "" | yes | posix) thread_file='posix' ;;
- esac
-- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
-+ tm_defines="$tm_defines SINGLE_LIBC"
-+ default_libc=LIBC_UCLIBC
- ;;
- *-*-rdos*)
- use_gcc_stdint=wrap
-@@ -1721,13 +1724,13 @@
-
- case ${target} in
- csky-*-linux-gnu*)
-- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
-+ default_libc=LIBC_GLIBC
- # Force .init_array support. The configure script cannot always
- # automatically detect that GAS supports it, yet we require it.
- gcc_cv_initfini_array=yes
- ;;
- csky-*-linux-uclibc*)
-- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
-+ default_libc=LIBC_UCLIBC
- default_use_cxa_atexit=no
- ;;
- *)
-@@ -3125,7 +3128,7 @@
- tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
- tmake_file="${tmake_file} rs6000/t-vxworks"
-
-- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
-+ default_libc=LIBC_GLIBC
- extra_objs="$extra_objs linux.o rs6000-linux.o"
- ;;
- powerpc-wrs-vxworks*)
-@@ -6079,3 +6082,32 @@
- fi
- ;;
- esac
-+
-+case "${with_default_libc}" in
-+glibc)
-+ default_libc=LIBC_GLIBC
-+ ;;
-+uclibc)
-+ default_libc=LIBC_UCLIBC
-+ ;;
-+bionic)
-+ default_libc=LIBC_BIONIC
-+ ;;
-+musl)
-+ default_libc=LIBC_MUSL
-+ ;;
-+"")
-+ ;;
-+*)
-+ echo "Unknown libc in --with-default-libc=$with_default_libc" 1>&2
-+ exit 1
-+ ;;
-+esac
-+
-+case "$default_libc" in
-+"")
-+ ;;
-+*)
-+ tm_defines="$tm_defines DEFAULT_LIBC=$default_libc"
-+ ;;
-+esac
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -2546,6 +2546,10 @@
- fi
- AC_SUBST(inhibit_libc)
-
-+AC_ARG_WITH(default-libc,
-+ [AS_HELP_STRING([--with-default-libc],
-+ [Use specified default C library])])
-+
- # When building gcc with a cross-compiler, we need to adjust things so
- # that the generator programs are still built with the native compiler.
- # Also, we cannot run fixincludes.
diff --git a/packages/gcc/14.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch b/packages/gcc/14.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch
deleted file mode 100644
index 955ff3ca..00000000
--- a/packages/gcc/14.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From fd6aa8e67aec185b0d84ba9551fd38c90c9d6d8a Mon Sep 17 00:00:00 2001
-From: Keith Packard <keithp@keithp.com>
-Date: Fri, 26 Aug 2022 14:30:03 -0700
-Subject: [PATCH] driver: Extend 'getenv' function to allow default value
-
-Right now, a missing environment variable provided to the 'getenv'
-function in a .specs file causes a fatal error. That makes writing a
-spec file that uses the GCC_EXEC_PREFIX value difficult as that
-variable is only set when the driver has been relocated, but not when
-run from the defined location. This makes building a relocatable
-toolchain difficult to extend to other ancilary pieces which use specs
-files to locate header and library files adjacent to the toolchain.
-
-This patch adds an optional third argument to the getenv function that
-can be used to fall back to the standard installation path when the
-driver hasn't set GCC_EXEC_PREFIX in the environment.
-
-For example, if an alternate C library is installed in
-${prefix}/extra, then this change allows the specs file to locate that
-relative to the gcc directory, if gcc is located in the original
-installation directory (which would leave GCC_EXEC_PREFIX unset), or
-if the gcc tree has been moved to a different location (where gcc
-would set GCC_EXEC_PREFIX itself):
-
-*cpp:
--isystem %:getenv(GCC_EXEC_PREFIX ../../extra/include ${prefix}/extra/include)
-
-I considered changing the behavior of either the %R sequence so that
-it had a defined behavior when there was no sysroot defined, or making
-the driver always set the GCC_EXEC_PREFIX environment variable and
-decided that the approach of adding functionality to getenv where it
-was previously invalid would cause the least potential for affecting
-existing usage.
-
-Signed-off-by: Keith Packard <keithp@keithp.com>
----
- gcc/doc/invoke.texi | 18 +++++++++++-------
- gcc/gcc.cc | 10 +++++++++-
- 2 files changed, 20 insertions(+), 8 deletions(-)
-
---- a/gcc/doc/invoke.texi
-+++ b/gcc/doc/invoke.texi
-@@ -36963,17 +36963,21 @@
-
- @table @code
- @item @code{getenv}
--The @code{getenv} spec function takes two arguments: an environment
--variable name and a string. If the environment variable is not
--defined, a fatal error is issued. Otherwise, the return value is the
--value of the environment variable concatenated with the string. For
--example, if @env{TOPDIR} is defined as @file{/path/to/top}, then:
-+
-+The @code{getenv} spec function takes two or three arguments: an
-+environment variable name, a string and an optional default value. If
-+the environment variable is not defined and a default value is
-+provided, that is used as the return value; otherwise a fatal error is
-+issued. Otherwise, the return value is the value of the environment
-+variable concatenated with the string. For example, if @env{TOPDIR}
-+is defined as @file{/path/to/top}, then:
-
- @smallexample
--%:getenv(TOPDIR /include)
-+%:getenv(TOPDIR /include /path/to/default/include)
- @end smallexample
-
--expands to @file{/path/to/top/include}.
-+expands to @file{/path/to/top/include}. If @env{TOPDIR} is not
-+defined, then this expands to @file{/path/to/default/include}.
-
- @item @code{if-exists}
- The @code{if-exists} spec function takes one argument, an absolute
---- a/gcc/gcc.cc
-+++ b/gcc/gcc.cc
-@@ -10300,12 +10300,20 @@
- char *ptr;
- size_t len;
-
-- if (argc != 2)
-+ if (argc != 2 && argc != 3)
- return NULL;
-
- varname = argv[0];
- value = env.get (varname);
-
-+ if (!value && argc == 3)
-+ {
-+ value = argv[2];
-+ result = XNEWVAR(char, strlen(value) + 1);
-+ strcpy(result, value);
-+ return result;
-+ }
-+
- /* If the variable isn't defined and this is allowed, craft our expected
- return value. Assume variable names used in specs strings don't contain
- any active spec character so don't need escaping. */
diff --git a/packages/gcc/14.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch b/packages/gcc/14.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch
deleted file mode 100644
index 5443630b..00000000
--- a/packages/gcc/14.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From be5d482de0099012288e617af0583772fac21714 Mon Sep 17 00:00:00 2001
-From: Keith Packard <keithp@keithp.com>
-Date: Tue, 23 Aug 2022 22:12:06 -0700
-Subject: [PATCH] Add newlib and picolibc as default C library choices
-
-Signed-off-by: Keith Packard <keithp@keithp.com>
----
- gcc/config.gcc | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
---- a/gcc/config.gcc
-+++ b/gcc/config.gcc
-@@ -693,7 +693,7 @@
- esac
-
- # Common C libraries.
--tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
-+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4 LIBC_NEWLIB=5 LIBC_PICOLIBC=6"
-
- default_libc=""
-
-@@ -6096,6 +6096,15 @@
- musl)
- default_libc=LIBC_MUSL
- ;;
-+newlib)
-+ # Newlib configurations don't set the DEFAULT_LIBC variable, so
-+ # avoid changing those by allowing --with-default-libc=newlib but
-+ # not actually setting the DEFAULT_LIBC variable.
-+ default_libc=
-+ ;;
-+picolibc)
-+ default_libc=LIBC_PICOLIBC
-+ ;;
- "")
- ;;
- *)
diff --git a/packages/gcc/14.2.0/0008-Support-picolibc-targets.patch b/packages/gcc/14.2.0/0008-Support-picolibc-targets.patch
deleted file mode 100644
index 987baf39..00000000
--- a/packages/gcc/14.2.0/0008-Support-picolibc-targets.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From c9c22fe9ce182e48282e2bf0a8830381d3c55dd4 Mon Sep 17 00:00:00 2001
-From: Keith Packard <keithp@keithp.com>
-Date: Sun, 12 Feb 2023 14:23:32 -0800
-Subject: [PATCH] Support picolibc targets
-
-Match *-picolibc-* and select picolibc as the default C library, plus continuing to use
-the newlib-based logic for other configuration items.
-
-Signed-off-by: Keith Packard <keithp@keithp.com>
----
- gcc/config.gcc | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
---- a/gcc/config.gcc
-+++ b/gcc/config.gcc
-@@ -1168,6 +1168,17 @@
- ;;
- esac
- ;;
-+*-picolibc-*)
-+ # __cxa_atexit is provided.
-+ default_use_cxa_atexit=yes
-+ use_gcc_stdint=wrap
-+ default_libc=LIBC_PICOLIBC
-+ case "${with_newlib}-${with_headers}" in
-+ no-no) use_gcc_stdint=provide ;;
-+ *) ;;
-+ esac
-+ ;;
-+
- *-*-elf|arc*-*-elf*)
- # Assume that newlib is being used and so __cxa_atexit is provided.
- default_use_cxa_atexit=yes
diff --git a/packages/gcc/14.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch b/packages/gcc/14.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch
deleted file mode 100644
index 57a22f98..00000000
--- a/packages/gcc/14.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From ef327a7c2a36b63e8a372bef88e3700460b51c34 Mon Sep 17 00:00:00 2001
-From: Keith Packard <keithp@keithp.com>
-Date: Sat, 11 Feb 2023 23:07:08 -0800
-Subject: [PATCH] gcc: Allow g++ to work differently from gcc
-
-Compile gcc.cc with -DIN_GPP defined when building g++ so that the
-code can respond appropriately for the default target language. This
-allows the driver to customize the specs used, selecting different
-linker scripts, adjusting the use of crtbegin.o/crtend.o etc.
-
-By default, this change has no effect; targets need to explicitly
-check for IN_GPP to have alternate behavior.
-
-Signed-off-by: Keith Packard <keithp@keithp.com>
----
- gcc/cp/Make-lang.in | 7 ++++++-
- gcc/gpp.cc | 21 +++++++++++++++++++++
- 2 files changed, 27 insertions(+), 1 deletion(-)
- create mode 100644 gcc/gpp.cc
-
---- a/gcc/cp/Make-lang.in
-+++ b/gcc/cp/Make-lang.in
-@@ -77,7 +77,12 @@
- endif
-
- # Create the compiler driver for g++.
--GXX_OBJS = $(GCC_OBJS) cp/g++spec.o
-+GXX_OBJS = $(GCC_OBJS:gcc.o=gpp.o) cp/g++spec.o
-+
-+CFLAGS-gpp.o = $(CFLAGS-gcc.o)
-+gpp.o: $(BASEVER)
-+gpp.o: gcc.o
-+
- xg++$(exeext): $(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS)
- +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
- $(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \
---- /dev/null
-+++ b/gcc/gpp.cc
-@@ -0,0 +1,21 @@
-+/* Compiler driver program that can handle many languages.
-+ Copyright (C) 1987-2022 Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC is free software; you can redistribute it and/or modify it under
-+the terms of the GNU General Public License as published by the Free
-+Software Foundation; either version 3, or (at your option) any later
-+version.
-+
-+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-+WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3. If not see
-+<http://www.gnu.org/licenses/>. */
-+
-+#define IN_GPP
-+#include "gcc.cc"
diff --git a/packages/gcc/14.2.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch b/packages/gcc/14.2.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch
deleted file mode 100644
index c0a32648..00000000
--- a/packages/gcc/14.2.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From d901175d36221fbf79a0eb8305823b88243b829c Mon Sep 17 00:00:00 2001
-From: Chris Packham <chris.packham@alliedtelesis.co.nz>
-Date: Thu, 7 Sep 2023 19:26:49 +1200
-Subject: [PATCH] libgcc: Exclude UCLIBC from GLIBC thread check
-
-UBLIBC defines __GLIBC__ but also marks __pthread_key_create() as
-protected. Leading to link errors with newer binutils such as:
-
- ld.bfd: isl_test_cpp17.o: non-canonical reference to canonical protected function `__pthread_key_create' in x86_64-multilib-linux-uclibc/sysroot/lib64/libc.so.1
- ld.bfd: failed to set dynamic section sizes: bad value
-
-Add a condition on !__UCLIBC__ when selecting a symbol to detect pthread
-usage so it picks the intended pthread_cancel().
-
-Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
----
- libgcc/gthr-posix.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/libgcc/gthr-posix.h
-+++ b/libgcc/gthr-posix.h
-@@ -246,7 +246,7 @@
- library does not provide pthread_cancel, so we do use pthread_create
- there (and interceptor libraries lose). */
-
--#ifdef __GLIBC__
-+#if defined(__GLIBC__) && !defined(__UCLIBC__)
- __gthrw2(__gthrw_(__pthread_key_create),
- __pthread_key_create,
- pthread_key_create)
diff --git a/packages/gcc/14.2.0/0011-aarch64-Fix-invalid-nested-subregs-PR115464.patch b/packages/gcc/14.2.0/0011-aarch64-Fix-invalid-nested-subregs-PR115464.patch
deleted file mode 100644
index 2625c308..00000000
--- a/packages/gcc/14.2.0/0011-aarch64-Fix-invalid-nested-subregs-PR115464.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From cb547fed9177c2a28f376c881facfcf4b64e70a9 Mon Sep 17 00:00:00 2001
-From: Richard Sandiford <richard.sandiford@arm.com>
-Date: Thu, 13 Jun 2024 12:48:21 +0100
-Subject: [PATCH 11/16] aarch64: Fix invalid nested subregs [PR115464]
-
-The testcase extracts one arm_neon.h vector from a pair (one subreg)
-and then reinterprets the result as an SVE vector (another subreg).
-Each subreg makes sense individually, but we can't fold them together
-into a single subreg: it's 32 bytes -> 16 bytes -> 16*N bytes,
-but the interpretation of 32 bytes -> 16*N bytes depends on
-whether N==1 or N>1.
-
-Since the second subreg makes sense individually, simplify_subreg
-should bail out rather than ICE on it. simplify_gen_subreg will
-then do the same (because it already checks validate_subreg).
-This leaves simplify_gen_subreg returning null, requiring the
-caller to take appropriate action.
-
-I think this is relatively likely to occur elsewhere, so the patch
-adds a helper for forcing a subreg, allowing a temporary pseudo to
-be created where necessary.
-
-I'll follow up by using force_subreg in more places. This patch
-is intended to be a minimal backportable fix for the PR.
-
-gcc/
- PR target/115464
- * simplify-rtx.cc (simplify_context::simplify_subreg): Don't try
- to fold two subregs together if their relationship isn't known
- at compile time.
- * explow.h (force_subreg): Declare.
- * explow.cc (force_subreg): New function.
- * config/aarch64/aarch64-sve-builtins-base.cc
- (svset_neonq_impl::expand): Use it instead of simplify_gen_subreg.
-
-gcc/testsuite/
- PR target/115464
- * gcc.target/aarch64/sve/acle/general/pr115464.c: New test.
-
-(cherry picked from commit 0970ff46ba6330fc80e8736fc05b2eaeeae0b6a0)
----
- gcc/config/aarch64/aarch64-sve-builtins-base.cc | 2 +-
- gcc/explow.cc | 15 +++++++++++++++
- gcc/explow.h | 2 ++
- gcc/simplify-rtx.cc | 5 +++++
- .../aarch64/sve/acle/general/pr115464.c | 13 +++++++++++++
- 5 files changed, 36 insertions(+), 1 deletion(-)
- create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c
-
-diff --git a/gcc/config/aarch64/aarch64-sve-builtins-base.cc b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-index 0d2edf3f19e..c9182594bc1 100644
---- a/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-+++ b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-@@ -1174,7 +1174,7 @@ public:
- Advanced SIMD argument as an SVE vector. */
- if (!BYTES_BIG_ENDIAN
- && is_undef (CALL_EXPR_ARG (e.call_expr, 0)))
-- return simplify_gen_subreg (mode, e.args[1], GET_MODE (e.args[1]), 0);
-+ return force_subreg (mode, e.args[1], GET_MODE (e.args[1]), 0);
-
- rtx_vector_builder builder (VNx16BImode, 16, 2);
- for (unsigned int i = 0; i < 16; i++)
-diff --git a/gcc/explow.cc b/gcc/explow.cc
-index 8e5f6b8e680..f6843398c4b 100644
---- a/gcc/explow.cc
-+++ b/gcc/explow.cc
-@@ -745,6 +745,21 @@ force_reg (machine_mode mode, rtx x)
- return temp;
- }
-
-+/* Like simplify_gen_subreg, but force OP into a new register if the
-+ subreg cannot be formed directly. */
-+
-+rtx
-+force_subreg (machine_mode outermode, rtx op,
-+ machine_mode innermode, poly_uint64 byte)
-+{
-+ rtx x = simplify_gen_subreg (outermode, op, innermode, byte);
-+ if (x)
-+ return x;
-+
-+ op = copy_to_mode_reg (innermode, op);
-+ return simplify_gen_subreg (outermode, op, innermode, byte);
-+}
-+
- /* If X is a memory ref, copy its contents to a new temp reg and return
- that reg. Otherwise, return X. */
-
-diff --git a/gcc/explow.h b/gcc/explow.h
-index 16aa02cfb68..cbd1fcb7eb3 100644
---- a/gcc/explow.h
-+++ b/gcc/explow.h
-@@ -42,6 +42,8 @@ extern rtx copy_to_suggested_reg (rtx, rtx, machine_mode);
- Args are mode (in case value is a constant) and the value. */
- extern rtx force_reg (machine_mode, rtx);
-
-+extern rtx force_subreg (machine_mode, rtx, machine_mode, poly_uint64);
-+
- /* Return given rtx, copied into a new temp reg if it was in memory. */
- extern rtx force_not_mem (rtx);
-
-diff --git a/gcc/simplify-rtx.cc b/gcc/simplify-rtx.cc
-index dceaa13333c..729d408aa55 100644
---- a/gcc/simplify-rtx.cc
-+++ b/gcc/simplify-rtx.cc
-@@ -7612,6 +7612,11 @@ simplify_context::simplify_subreg (machine_mode outermode, rtx op,
- poly_uint64 innermostsize = GET_MODE_SIZE (innermostmode);
- rtx newx;
-
-+ /* Make sure that the relationship between the two subregs is
-+ known at compile time. */
-+ if (!ordered_p (outersize, innermostsize))
-+ return NULL_RTX;
-+
- if (outermode == innermostmode
- && known_eq (byte, 0U)
- && known_eq (SUBREG_BYTE (op), 0))
-diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c
-new file mode 100644
-index 00000000000..d728d1325ed
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c
-@@ -0,0 +1,13 @@
-+/* { dg-options "-O2" } */
-+
-+#include <arm_neon.h>
-+#include <arm_sve.h>
-+#include <arm_neon_sve_bridge.h>
-+
-+svuint16_t
-+convolve4_4_x (uint16x8x2_t permute_tbl)
-+{
-+ return svset_neonq_u16 (svundef_u16 (), permute_tbl.val[1]);
-+}
-+
-+/* { dg-final { scan-assembler {\tmov\tz0\.d, z1\.d\n} } } */
---
-2.44.2
-
diff --git a/packages/gcc/14.2.0/0012-aarch64-Use-force_subreg-in-more-places.patch b/packages/gcc/14.2.0/0012-aarch64-Use-force_subreg-in-more-places.patch
deleted file mode 100644
index bddf3977..00000000
--- a/packages/gcc/14.2.0/0012-aarch64-Use-force_subreg-in-more-places.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From 12d860b5b700b5218461a0b9e4a1a3ddb55eb211 Mon Sep 17 00:00:00 2001
-From: Richard Sandiford <richard.sandiford@arm.com>
-Date: Tue, 18 Jun 2024 12:22:30 +0100
-Subject: [PATCH 12/16] aarch64: Use force_subreg in more places
-
-This patch makes the aarch64 code use force_subreg instead of
-simplify_gen_subreg in more places. The criteria were:
-
-(1) The code is obviously specific to expand (where new pseudos
- can be created).
-
-(2) The value is obviously an rvalue rather than an lvalue.
-
-(3) The offset wasn't a simple lowpart or highpart calculation;
- a later patch will deal with those.
-
-gcc/
- * config/aarch64/aarch64-builtins.cc (aarch64_expand_fcmla_builtin):
- Use force_subreg instead of simplify_gen_subreg.
- * config/aarch64/aarch64-simd.md (ctz<mode>2): Likewise.
- * config/aarch64/aarch64-sve-builtins-base.cc
- (svget_impl::expand): Likewise.
- (svget_neonq_impl::expand): Likewise.
- * config/aarch64/aarch64-sve-builtins-functions.h
- (multireg_permute::expand): Likewise.
-
-(cherry picked from commit 1474a8eead4ab390e59ee014befa8c40346679f4)
----
- gcc/config/aarch64/aarch64-builtins.cc | 4 ++--
- gcc/config/aarch64/aarch64-simd.md | 4 ++--
- gcc/config/aarch64/aarch64-sve-builtins-base.cc | 8 +++-----
- gcc/config/aarch64/aarch64-sve-builtins-functions.h | 6 +++---
- 4 files changed, 10 insertions(+), 12 deletions(-)
-
-diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc
-index 75d21de1401..b2e46a073a8 100644
---- a/gcc/config/aarch64/aarch64-builtins.cc
-+++ b/gcc/config/aarch64/aarch64-builtins.cc
-@@ -2510,12 +2510,12 @@ aarch64_expand_fcmla_builtin (tree exp, rtx target, int fcode)
- rtx temp2 = gen_reg_rtx (DImode);
- temp1 = simplify_gen_subreg (d->mode, op2, quadmode,
- subreg_lowpart_offset (d->mode, quadmode));
-- temp1 = simplify_gen_subreg (V2DImode, temp1, d->mode, 0);
-+ temp1 = force_subreg (V2DImode, temp1, d->mode, 0);
- if (BYTES_BIG_ENDIAN)
- emit_insn (gen_aarch64_get_lanev2di (temp2, temp1, const0_rtx));
- else
- emit_insn (gen_aarch64_get_lanev2di (temp2, temp1, const1_rtx));
-- op2 = simplify_gen_subreg (d->mode, temp2, GET_MODE (temp2), 0);
-+ op2 = force_subreg (d->mode, temp2, GET_MODE (temp2), 0);
-
- /* And recalculate the index. */
- lane -= nunits / 4;
-diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md
-index 33ab0741e87..5b9efe0b165 100644
---- a/gcc/config/aarch64/aarch64-simd.md
-+++ b/gcc/config/aarch64/aarch64-simd.md
-@@ -412,8 +412,8 @@
- "TARGET_SIMD"
- {
- emit_insn (gen_bswap<mode>2 (operands[0], operands[1]));
-- rtx op0_castsi2qi = simplify_gen_subreg(<VS:VSI2QI>mode, operands[0],
-- <MODE>mode, 0);
-+ rtx op0_castsi2qi = force_subreg (<VS:VSI2QI>mode, operands[0],
-+ <MODE>mode, 0);
- emit_insn (gen_aarch64_rbit<VS:vsi2qi> (op0_castsi2qi, op0_castsi2qi));
- emit_insn (gen_clz<mode>2 (operands[0], operands[0]));
- DONE;
-diff --git a/gcc/config/aarch64/aarch64-sve-builtins-base.cc b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-index c9182594bc1..2c95da79572 100644
---- a/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-+++ b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-@@ -1121,9 +1121,8 @@ public:
- expand (function_expander &e) const override
- {
- /* Fold the access into a subreg rvalue. */
-- return simplify_gen_subreg (e.vector_mode (0), e.args[0],
-- GET_MODE (e.args[0]),
-- INTVAL (e.args[1]) * BYTES_PER_SVE_VECTOR);
-+ return force_subreg (e.vector_mode (0), e.args[0], GET_MODE (e.args[0]),
-+ INTVAL (e.args[1]) * BYTES_PER_SVE_VECTOR);
- }
- };
-
-@@ -1157,8 +1156,7 @@ public:
- e.add_fixed_operand (indices);
- return e.generate_insn (icode);
- }
-- return simplify_gen_subreg (e.result_mode (), e.args[0],
-- GET_MODE (e.args[0]), 0);
-+ return force_subreg (e.result_mode (), e.args[0], GET_MODE (e.args[0]), 0);
- }
- };
-
-diff --git a/gcc/config/aarch64/aarch64-sve-builtins-functions.h b/gcc/config/aarch64/aarch64-sve-builtins-functions.h
-index 3b8e575e98e..7d06a57ff83 100644
---- a/gcc/config/aarch64/aarch64-sve-builtins-functions.h
-+++ b/gcc/config/aarch64/aarch64-sve-builtins-functions.h
-@@ -639,9 +639,9 @@ public:
- {
- machine_mode elt_mode = e.vector_mode (0);
- rtx arg = e.args[0];
-- e.args[0] = simplify_gen_subreg (elt_mode, arg, GET_MODE (arg), 0);
-- e.args.safe_push (simplify_gen_subreg (elt_mode, arg, GET_MODE (arg),
-- GET_MODE_SIZE (elt_mode)));
-+ e.args[0] = force_subreg (elt_mode, arg, GET_MODE (arg), 0);
-+ e.args.safe_push (force_subreg (elt_mode, arg, GET_MODE (arg),
-+ GET_MODE_SIZE (elt_mode)));
- }
- return e.use_exact_insn (icode);
- }
---
-2.44.2
-
diff --git a/packages/gcc/14.2.0/0013-aarch64-Add-some-uses-of-force_lowpart_subreg.patch b/packages/gcc/14.2.0/0013-aarch64-Add-some-uses-of-force_lowpart_subreg.patch
deleted file mode 100644
index fd4d9847..00000000
--- a/packages/gcc/14.2.0/0013-aarch64-Add-some-uses-of-force_lowpart_subreg.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-From eb49bbb886ef374eddb93e866c9c9f5f314c8014 Mon Sep 17 00:00:00 2001
-From: Richard Sandiford <richard.sandiford@arm.com>
-Date: Tue, 18 Jun 2024 12:22:31 +0100
-Subject: [PATCH 13/16] aarch64: Add some uses of force_lowpart_subreg
-
-This patch makes more use of force_lowpart_subreg, similarly
-to the recent patch for force_subreg. The criteria were:
-
-(1) The code is obviously specific to expand (where new pseudos
- can be created).
-
-(2) The value is obviously an rvalue rather than an lvalue.
-
-gcc/
- PR target/115464
- * config/aarch64/aarch64-builtins.cc (aarch64_expand_fcmla_builtin)
- (aarch64_expand_rwsr_builtin): Use force_lowpart_subreg instead of
- simplify_gen_subreg and lowpart_subreg.
- * config/aarch64/aarch64-sve-builtins-base.cc
- (svset_neonq_impl::expand): Likewise.
- * config/aarch64/aarch64-sve-builtins-sme.cc
- (add_load_store_slice_operand): Likewise.
- * config/aarch64/aarch64.cc (aarch64_sve_reinterpret): Likewise.
- (aarch64_addti_scratch_regs, aarch64_subvti_scratch_regs): Likewise.
-
-gcc/testsuite/
- PR target/115464
- * gcc.target/aarch64/sve/acle/general/pr115464_2.c: New test.
-
-(cherry picked from commit 6bd4fbae45d11795a9a6f54b866308d4d7134def)
----
- gcc/config/aarch64/aarch64-builtins.cc | 11 +++++------
- gcc/config/aarch64/aarch64-sve-builtins-base.cc | 2 +-
- gcc/config/aarch64/aarch64-sve-builtins-sme.cc | 2 +-
- gcc/config/aarch64/aarch64.cc | 14 +++++---------
- .../aarch64/sve/acle/general/pr115464_2.c | 11 +++++++++++
- 5 files changed, 23 insertions(+), 17 deletions(-)
- create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c
-
-diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc
-index b2e46a073a8..264b9560709 100644
---- a/gcc/config/aarch64/aarch64-builtins.cc
-+++ b/gcc/config/aarch64/aarch64-builtins.cc
-@@ -2497,8 +2497,7 @@ aarch64_expand_fcmla_builtin (tree exp, rtx target, int fcode)
- int lane = INTVAL (lane_idx);
-
- if (lane < nunits / 4)
-- op2 = simplify_gen_subreg (d->mode, op2, quadmode,
-- subreg_lowpart_offset (d->mode, quadmode));
-+ op2 = force_lowpart_subreg (d->mode, op2, quadmode);
- else
- {
- /* Select the upper 64 bits, either a V2SF or V4HF, this however
-@@ -2508,8 +2507,7 @@ aarch64_expand_fcmla_builtin (tree exp, rtx target, int fcode)
- gen_highpart_mode generates code that isn't optimal. */
- rtx temp1 = gen_reg_rtx (d->mode);
- rtx temp2 = gen_reg_rtx (DImode);
-- temp1 = simplify_gen_subreg (d->mode, op2, quadmode,
-- subreg_lowpart_offset (d->mode, quadmode));
-+ temp1 = force_lowpart_subreg (d->mode, op2, quadmode);
- temp1 = force_subreg (V2DImode, temp1, d->mode, 0);
- if (BYTES_BIG_ENDIAN)
- emit_insn (gen_aarch64_get_lanev2di (temp2, temp1, const0_rtx));
-@@ -2754,7 +2752,7 @@ aarch64_expand_rwsr_builtin (tree exp, rtx target, int fcode)
- case AARCH64_WSR64:
- case AARCH64_WSRF64:
- case AARCH64_WSR128:
-- subreg = lowpart_subreg (sysreg_mode, input_val, mode);
-+ subreg = force_lowpart_subreg (sysreg_mode, input_val, mode);
- break;
- case AARCH64_WSRF:
- subreg = gen_lowpart_SUBREG (SImode, input_val);
-@@ -2789,7 +2787,8 @@ aarch64_expand_rwsr_builtin (tree exp, rtx target, int fcode)
- case AARCH64_RSR64:
- case AARCH64_RSRF64:
- case AARCH64_RSR128:
-- return lowpart_subreg (TYPE_MODE (TREE_TYPE (exp)), target, sysreg_mode);
-+ return force_lowpart_subreg (TYPE_MODE (TREE_TYPE (exp)),
-+ target, sysreg_mode);
- case AARCH64_RSRF:
- subreg = gen_lowpart_SUBREG (SImode, target);
- return gen_lowpart_SUBREG (SFmode, subreg);
-diff --git a/gcc/config/aarch64/aarch64-sve-builtins-base.cc b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-index 2c95da79572..3c970e9c5f8 100644
---- a/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-+++ b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-@@ -1183,7 +1183,7 @@ public:
- if (BYTES_BIG_ENDIAN)
- return e.use_exact_insn (code_for_aarch64_sve_set_neonq (mode));
- insn_code icode = code_for_vcond_mask (mode, mode);
-- e.args[1] = lowpart_subreg (mode, e.args[1], GET_MODE (e.args[1]));
-+ e.args[1] = force_lowpart_subreg (mode, e.args[1], GET_MODE (e.args[1]));
- e.add_output_operand (icode);
- e.add_input_operand (icode, e.args[1]);
- e.add_input_operand (icode, e.args[0]);
-diff --git a/gcc/config/aarch64/aarch64-sve-builtins-sme.cc b/gcc/config/aarch64/aarch64-sve-builtins-sme.cc
-index f4c91bcbb95..b66b35ae60b 100644
---- a/gcc/config/aarch64/aarch64-sve-builtins-sme.cc
-+++ b/gcc/config/aarch64/aarch64-sve-builtins-sme.cc
-@@ -112,7 +112,7 @@ add_load_store_slice_operand (function_expander &e, insn_code icode,
- rtx base = e.args[argno];
- if (e.mode_suffix_id == MODE_vnum)
- {
-- rtx vnum = lowpart_subreg (SImode, e.args[vnum_argno], DImode);
-+ rtx vnum = force_lowpart_subreg (SImode, e.args[vnum_argno], DImode);
- base = simplify_gen_binary (PLUS, SImode, base, vnum);
- }
- e.add_input_operand (icode, base);
-diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
-index 1beec94629d..a064aeecbc0 100644
---- a/gcc/config/aarch64/aarch64.cc
-+++ b/gcc/config/aarch64/aarch64.cc
-@@ -3284,7 +3284,7 @@ aarch64_sve_reinterpret (machine_mode mode, rtx x)
- /* can_change_mode_class must only return true if subregs and svreinterprets
- have the same semantics. */
- if (targetm.can_change_mode_class (GET_MODE (x), mode, FP_REGS))
-- return lowpart_subreg (mode, x, GET_MODE (x));
-+ return force_lowpart_subreg (mode, x, GET_MODE (x));
-
- rtx res = gen_reg_rtx (mode);
- x = force_reg (GET_MODE (x), x);
-@@ -26979,9 +26979,8 @@ aarch64_addti_scratch_regs (rtx op1, rtx op2, rtx *low_dest,
- rtx *high_in2)
- {
- *low_dest = gen_reg_rtx (DImode);
-- *low_in1 = gen_lowpart (DImode, op1);
-- *low_in2 = simplify_gen_subreg (DImode, op2, TImode,
-- subreg_lowpart_offset (DImode, TImode));
-+ *low_in1 = force_lowpart_subreg (DImode, op1, TImode);
-+ *low_in2 = force_lowpart_subreg (DImode, op2, TImode);
- *high_dest = gen_reg_rtx (DImode);
- *high_in1 = gen_highpart (DImode, op1);
- *high_in2 = simplify_gen_subreg (DImode, op2, TImode,
-@@ -27013,11 +27012,8 @@ aarch64_subvti_scratch_regs (rtx op1, rtx op2, rtx *low_dest,
- rtx *high_in2)
- {
- *low_dest = gen_reg_rtx (DImode);
-- *low_in1 = simplify_gen_subreg (DImode, op1, TImode,
-- subreg_lowpart_offset (DImode, TImode));
--
-- *low_in2 = simplify_gen_subreg (DImode, op2, TImode,
-- subreg_lowpart_offset (DImode, TImode));
-+ *low_in1 = force_lowpart_subreg (DImode, op1, TImode);
-+ *low_in2 = force_lowpart_subreg (DImode, op2, TImode);
- *high_dest = gen_reg_rtx (DImode);
-
- *high_in1 = simplify_gen_subreg (DImode, op1, TImode,
-diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c
-new file mode 100644
-index 00000000000..f561c34f732
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c
-@@ -0,0 +1,11 @@
-+/* { dg-options "-O2" } */
-+
-+#include <arm_neon.h>
-+#include <arm_sve.h>
-+#include <arm_neon_sve_bridge.h>
-+
-+svuint16_t
-+convolve4_4_x (uint16x8x2_t permute_tbl, svuint16_t a)
-+{
-+ return svset_neonq_u16 (a, permute_tbl.val[1]);
-+}
---
-2.44.2
-
diff --git a/packages/gcc/14.2.0/0014-Add-force_lowpart_subreg.patch b/packages/gcc/14.2.0/0014-Add-force_lowpart_subreg.patch
deleted file mode 100644
index 17fc7b64..00000000
--- a/packages/gcc/14.2.0/0014-Add-force_lowpart_subreg.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From 2dcdf9d026ed2e881b0bd8b378ed072e410490fe Mon Sep 17 00:00:00 2001
-From: Richard Sandiford <richard.sandiford@arm.com>
-Date: Tue, 18 Jun 2024 12:22:31 +0100
-Subject: [PATCH 14/16] Add force_lowpart_subreg
-
-optabs had a local function called lowpart_subreg_maybe_copy
-that is very similar to the lowpart version of force_subreg.
-This patch adds a force_lowpart_subreg wrapper around
-force_subreg and uses it in optabs.cc.
-
-The only difference between the old and new functions is that
-the old one asserted success while the new one doesn't.
-It's common not to assert elsewhere when taking subregs;
-normally a null result is enough.
-
-Later patches will make more use of the new function.
-
-gcc/
- * explow.h (force_lowpart_subreg): Declare.
- * explow.cc (force_lowpart_subreg): New function.
- * optabs.cc (lowpart_subreg_maybe_copy): Delete.
- (expand_absneg_bit): Use force_lowpart_subreg instead of
- lowpart_subreg_maybe_copy.
- (expand_copysign_bit): Likewise.
-
-(cherry picked from commit 5f40d1c0cc6ce91ef28d326b8707b3f05e6f239c)
----
- gcc/explow.cc | 14 ++++++++++++++
- gcc/explow.h | 1 +
- gcc/optabs.cc | 24 ++----------------------
- 3 files changed, 17 insertions(+), 22 deletions(-)
-
-diff --git a/gcc/explow.cc b/gcc/explow.cc
-index f6843398c4b..5fdfa81f69b 100644
---- a/gcc/explow.cc
-+++ b/gcc/explow.cc
-@@ -760,6 +760,20 @@ force_subreg (machine_mode outermode, rtx op,
- return simplify_gen_subreg (outermode, op, innermode, byte);
- }
-
-+/* Try to return an rvalue expression for the OUTERMODE lowpart of OP,
-+ which has mode INNERMODE. Allow OP to be forced into a new register
-+ if necessary.
-+
-+ Return null on failure. */
-+
-+rtx
-+force_lowpart_subreg (machine_mode outermode, rtx op,
-+ machine_mode innermode)
-+{
-+ auto byte = subreg_lowpart_offset (outermode, innermode);
-+ return force_subreg (outermode, op, innermode, byte);
-+}
-+
- /* If X is a memory ref, copy its contents to a new temp reg and return
- that reg. Otherwise, return X. */
-
-diff --git a/gcc/explow.h b/gcc/explow.h
-index cbd1fcb7eb3..dd654649b06 100644
---- a/gcc/explow.h
-+++ b/gcc/explow.h
-@@ -43,6 +43,7 @@ extern rtx copy_to_suggested_reg (rtx, rtx, machine_mode);
- extern rtx force_reg (machine_mode, rtx);
-
- extern rtx force_subreg (machine_mode, rtx, machine_mode, poly_uint64);
-+extern rtx force_lowpart_subreg (machine_mode, rtx, machine_mode);
-
- /* Return given rtx, copied into a new temp reg if it was in memory. */
- extern rtx force_not_mem (rtx);
-diff --git a/gcc/optabs.cc b/gcc/optabs.cc
-index ce91f94ed43..804c0dc73ba 100644
---- a/gcc/optabs.cc
-+++ b/gcc/optabs.cc
-@@ -3096,26 +3096,6 @@ expand_ffs (scalar_int_mode mode, rtx op0, rtx target)
- return 0;
- }
-
--/* Extract the OMODE lowpart from VAL, which has IMODE. Under certain
-- conditions, VAL may already be a SUBREG against which we cannot generate
-- a further SUBREG. In this case, we expect forcing the value into a
-- register will work around the situation. */
--
--static rtx
--lowpart_subreg_maybe_copy (machine_mode omode, rtx val,
-- machine_mode imode)
--{
-- rtx ret;
-- ret = lowpart_subreg (omode, val, imode);
-- if (ret == NULL)
-- {
-- val = force_reg (imode, val);
-- ret = lowpart_subreg (omode, val, imode);
-- gcc_assert (ret != NULL);
-- }
-- return ret;
--}
--
- /* Expand a floating point absolute value or negation operation via a
- logical operation on the sign bit. */
-
-@@ -3204,7 +3184,7 @@ expand_absneg_bit (enum rtx_code code, scalar_float_mode mode,
- gen_lowpart (imode, op0),
- immed_wide_int_const (mask, imode),
- gen_lowpart (imode, target), 1, OPTAB_LIB_WIDEN);
-- target = lowpart_subreg_maybe_copy (mode, temp, imode);
-+ target = force_lowpart_subreg (mode, temp, imode);
-
- set_dst_reg_note (get_last_insn (), REG_EQUAL,
- gen_rtx_fmt_e (code, mode, copy_rtx (op0)),
-@@ -4043,7 +4023,7 @@ expand_copysign_bit (scalar_float_mode mode, rtx op0, rtx op1, rtx target,
-
- temp = expand_binop (imode, ior_optab, op0, op1,
- gen_lowpart (imode, target), 1, OPTAB_LIB_WIDEN);
-- target = lowpart_subreg_maybe_copy (mode, temp, imode);
-+ target = force_lowpart_subreg (mode, temp, imode);
- }
-
- return target;
---
-2.44.2
-
diff --git a/packages/gcc/14.2.0/0015-Make-more-use-of-force_subreg.patch b/packages/gcc/14.2.0/0015-Make-more-use-of-force_subreg.patch
deleted file mode 100644
index 697c8760..00000000
--- a/packages/gcc/14.2.0/0015-Make-more-use-of-force_subreg.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-From d02fe5a6bfdfcae086e5374db3f8fd076df9b1a5 Mon Sep 17 00:00:00 2001
-From: Richard Sandiford <richard.sandiford@arm.com>
-Date: Tue, 18 Jun 2024 12:22:30 +0100
-Subject: [PATCH 15/16] Make more use of force_subreg
-
-This patch makes target-independent code use force_subreg instead
-of simplify_gen_subreg in some places. The criteria were:
-
-(1) The code is obviously specific to expand (where new pseudos
- can be created), or at least would be invalid to call when
- !can_create_pseudo_p () and temporaries are needed.
-
-(2) The value is obviously an rvalue rather than an lvalue.
-
-(3) The offset wasn't a simple lowpart or highpart calculation;
- a later patch will deal with those.
-
-Doing this should reduce the likelihood of bugs like PR115464
-occuring in other situations.
-
-gcc/
- * expmed.cc (store_bit_field_using_insv): Use force_subreg
- instead of simplify_gen_subreg.
- (store_bit_field_1): Likewise.
- (extract_bit_field_as_subreg): Likewise.
- (extract_integral_bit_field): Likewise.
- (emit_store_flag_1): Likewise.
- * expr.cc (convert_move): Likewise.
- (convert_modes): Likewise.
- (emit_group_load_1): Likewise.
- (emit_group_store): Likewise.
- (expand_assignment): Likewise.
-
-(cherry picked from commit d4047da6a070175aae7121c739d1cad6b08ff4b2)
----
- gcc/expmed.cc | 22 ++++++++--------------
- gcc/expr.cc | 27 ++++++++++++---------------
- 2 files changed, 20 insertions(+), 29 deletions(-)
-
-diff --git a/gcc/expmed.cc b/gcc/expmed.cc
-index 19765311b95..bd190722de6 100644
---- a/gcc/expmed.cc
-+++ b/gcc/expmed.cc
-@@ -695,13 +695,7 @@ store_bit_field_using_insv (const extraction_insn *insv, rtx op0,
- if we must narrow it, be sure we do it correctly. */
-
- if (GET_MODE_SIZE (value_mode) < GET_MODE_SIZE (op_mode))
-- {
-- tmp = simplify_subreg (op_mode, value1, value_mode, 0);
-- if (! tmp)
-- tmp = simplify_gen_subreg (op_mode,
-- force_reg (value_mode, value1),
-- value_mode, 0);
-- }
-+ tmp = force_subreg (op_mode, value1, value_mode, 0);
- else
- {
- tmp = gen_lowpart_if_possible (op_mode, value1);
-@@ -800,7 +794,7 @@ store_bit_field_1 (rtx str_rtx, poly_uint64 bitsize, poly_uint64 bitnum,
- if (known_eq (bitnum, 0U)
- && known_eq (bitsize, GET_MODE_BITSIZE (GET_MODE (op0))))
- {
-- sub = simplify_gen_subreg (GET_MODE (op0), value, fieldmode, 0);
-+ sub = force_subreg (GET_MODE (op0), value, fieldmode, 0);
- if (sub)
- {
- if (reverse)
-@@ -1627,7 +1621,7 @@ extract_bit_field_as_subreg (machine_mode mode, rtx op0,
- && known_eq (bitsize, GET_MODE_BITSIZE (mode))
- && lowpart_bit_field_p (bitnum, bitsize, op0_mode)
- && TRULY_NOOP_TRUNCATION_MODES_P (mode, op0_mode))
-- return simplify_gen_subreg (mode, op0, op0_mode, bytenum);
-+ return force_subreg (mode, op0, op0_mode, bytenum);
- return NULL_RTX;
- }
-
-@@ -1994,11 +1988,11 @@ extract_integral_bit_field (rtx op0, opt_scalar_int_mode op0_mode,
- return convert_extracted_bit_field (target, mode, tmode, unsignedp);
- }
- /* If OP0 is a hard register, copy it to a pseudo before calling
-- simplify_gen_subreg. */
-+ force_subreg. */
- if (REG_P (op0) && HARD_REGISTER_P (op0))
- op0 = copy_to_reg (op0);
-- op0 = simplify_gen_subreg (word_mode, op0, op0_mode.require (),
-- bitnum / BITS_PER_WORD * UNITS_PER_WORD);
-+ op0 = force_subreg (word_mode, op0, op0_mode.require (),
-+ bitnum / BITS_PER_WORD * UNITS_PER_WORD);
- op0_mode = word_mode;
- bitnum %= BITS_PER_WORD;
- }
-@@ -5759,8 +5753,8 @@ emit_store_flag_1 (rtx target, enum rtx_code code, rtx op0, rtx op1,
-
- /* Do a logical OR or AND of the two words and compare the
- result. */
-- op00 = simplify_gen_subreg (word_mode, op0, int_mode, 0);
-- op01 = simplify_gen_subreg (word_mode, op0, int_mode, UNITS_PER_WORD);
-+ op00 = force_subreg (word_mode, op0, int_mode, 0);
-+ op01 = force_subreg (word_mode, op0, int_mode, UNITS_PER_WORD);
- tem = expand_binop (word_mode,
- op1 == const0_rtx ? ior_optab : and_optab,
- op00, op01, NULL_RTX, unsignedp,
-diff --git a/gcc/expr.cc b/gcc/expr.cc
-index 9f66d479445..8ffa76b1bb8 100644
---- a/gcc/expr.cc
-+++ b/gcc/expr.cc
-@@ -302,7 +302,7 @@ convert_move (rtx to, rtx from, int unsignedp)
- GET_MODE_BITSIZE (to_mode)));
-
- if (VECTOR_MODE_P (to_mode))
-- from = simplify_gen_subreg (to_mode, from, GET_MODE (from), 0);
-+ from = force_subreg (to_mode, from, GET_MODE (from), 0);
- else
- to = simplify_gen_subreg (from_mode, to, GET_MODE (to), 0);
-
-@@ -936,7 +936,7 @@ convert_modes (machine_mode mode, machine_mode oldmode, rtx x, int unsignedp)
- {
- gcc_assert (known_eq (GET_MODE_BITSIZE (mode),
- GET_MODE_BITSIZE (oldmode)));
-- return simplify_gen_subreg (mode, x, oldmode, 0);
-+ return force_subreg (mode, x, oldmode, 0);
- }
-
- temp = gen_reg_rtx (mode);
-@@ -3076,8 +3076,8 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type,
- }
- }
- else if (CONSTANT_P (src) && GET_MODE (dst) != BLKmode
-- && XVECLEN (dst, 0) > 1)
-- tmps[i] = simplify_gen_subreg (mode, src, GET_MODE (dst), bytepos);
-+ && XVECLEN (dst, 0) > 1)
-+ tmps[i] = force_subreg (mode, src, GET_MODE (dst), bytepos);
- else if (CONSTANT_P (src))
- {
- if (known_eq (bytelen, ssize))
-@@ -3301,7 +3301,7 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED,
- if (known_eq (rtx_to_poly_int64 (XEXP (XVECEXP (src, 0, start), 1)),
- bytepos))
- {
-- temp = simplify_gen_subreg (outer, tmps[start], inner, 0);
-+ temp = force_subreg (outer, tmps[start], inner, 0);
- if (temp)
- {
- emit_move_insn (dst, temp);
-@@ -3321,7 +3321,7 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED,
- finish - 1), 1)),
- bytepos))
- {
-- temp = simplify_gen_subreg (outer, tmps[finish - 1], inner, 0);
-+ temp = force_subreg (outer, tmps[finish - 1], inner, 0);
- if (temp)
- {
- emit_move_insn (dst, temp);
-@@ -6195,11 +6195,9 @@ expand_assignment (tree to, tree from, bool nontemporal)
- to_mode = GET_MODE_INNER (to_mode);
- machine_mode from_mode = GET_MODE_INNER (GET_MODE (result));
- rtx from_real
-- = simplify_gen_subreg (to_mode, XEXP (result, 0),
-- from_mode, 0);
-+ = force_subreg (to_mode, XEXP (result, 0), from_mode, 0);
- rtx from_imag
-- = simplify_gen_subreg (to_mode, XEXP (result, 1),
-- from_mode, 0);
-+ = force_subreg (to_mode, XEXP (result, 1), from_mode, 0);
- if (!from_real || !from_imag)
- goto concat_store_slow;
- emit_move_insn (XEXP (to_rtx, 0), from_real);
-@@ -6215,8 +6213,7 @@ expand_assignment (tree to, tree from, bool nontemporal)
- if (MEM_P (result))
- from_rtx = change_address (result, to_mode, NULL_RTX);
- else
-- from_rtx
-- = simplify_gen_subreg (to_mode, result, from_mode, 0);
-+ from_rtx = force_subreg (to_mode, result, from_mode, 0);
- if (from_rtx)
- {
- emit_move_insn (XEXP (to_rtx, 0),
-@@ -6228,10 +6225,10 @@ expand_assignment (tree to, tree from, bool nontemporal)
- {
- to_mode = GET_MODE_INNER (to_mode);
- rtx from_real
-- = simplify_gen_subreg (to_mode, result, from_mode, 0);
-+ = force_subreg (to_mode, result, from_mode, 0);
- rtx from_imag
-- = simplify_gen_subreg (to_mode, result, from_mode,
-- GET_MODE_SIZE (to_mode));
-+ = force_subreg (to_mode, result, from_mode,
-+ GET_MODE_SIZE (to_mode));
- if (!from_real || !from_imag)
- goto concat_store_slow;
- emit_move_insn (XEXP (to_rtx, 0), from_real);
---
-2.44.2
-
diff --git a/packages/gcc/14.2.0/0016-Revert-one-of-the-force_subreg-changes.patch b/packages/gcc/14.2.0/0016-Revert-one-of-the-force_subreg-changes.patch
deleted file mode 100644
index 629cfbda..00000000
--- a/packages/gcc/14.2.0/0016-Revert-one-of-the-force_subreg-changes.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 5468439a1f987b7d801c6c76d6c989e57af8916a Mon Sep 17 00:00:00 2001
-From: Richard Sandiford <richard.sandiford@arm.com>
-Date: Tue, 25 Jun 2024 09:41:21 +0100
-Subject: [PATCH 16/16] Revert one of the force_subreg changes
-
-One of the changes in g:d4047da6a070175aae7121c739d1cad6b08ff4b2
-caused a regression in ft32-elf; see:
-
- https://gcc.gnu.org/pipermail/gcc-patches/2024-June/655418.html
-
-for details. This change was different from the others in that the
-original call was to simplify_subreg rather than simplify_lowpart_subreg.
-The old code would therefore go on to do the force_reg for more cases
-than the new code would.
-
-gcc/
- * expmed.cc (store_bit_field_using_insv): Revert earlier change
- to use force_subreg instead of simplify_gen_subreg.
-
-(cherry picked from commit b694bf417cdd7d0a4d78e9927bab6bc202b7df6c)
----
- gcc/expmed.cc | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/gcc/expmed.cc b/gcc/expmed.cc
-index bd190722de6..85ec2614a3f 100644
---- a/gcc/expmed.cc
-+++ b/gcc/expmed.cc
-@@ -695,7 +695,13 @@ store_bit_field_using_insv (const extraction_insn *insv, rtx op0,
- if we must narrow it, be sure we do it correctly. */
-
- if (GET_MODE_SIZE (value_mode) < GET_MODE_SIZE (op_mode))
-- tmp = force_subreg (op_mode, value1, value_mode, 0);
-+ {
-+ tmp = simplify_subreg (op_mode, value1, value_mode, 0);
-+ if (! tmp)
-+ tmp = simplify_gen_subreg (op_mode,
-+ force_reg (value_mode, value1),
-+ value_mode, 0);
-+ }
- else
- {
- tmp = gen_lowpart_if_possible (op_mode, value1);
---
-2.44.2
-
diff --git a/packages/gcc/14.2.0/chksum b/packages/gcc/14.2.0/chksum
deleted file mode 100644
index 40000f5c..00000000
--- a/packages/gcc/14.2.0/chksum
+++ /dev/null
@@ -1,8 +0,0 @@
-md5 gcc-14.2.0.tar.xz 2268420ba02dc01821960e274711bde0
-sha1 gcc-14.2.0.tar.xz d91ecc3d20ce6298bd95f9b09cc51dc6d3c73ae3
-sha256 gcc-14.2.0.tar.xz a7b39bc69cbf9e25826c5a60ab26477001f7c08d85cec04bc0e29cabed6f3cc9
-sha512 gcc-14.2.0.tar.xz 932bdef0cda94bacedf452ab17f103c0cb511ff2cec55e9112fc0328cbf1d803b42595728ea7b200e0a057c03e85626f937012e49a7515bc5dd256b2bf4bc396
-md5 gcc-14.2.0.tar.gz b89ddcdaf5c1b6214abad40d9761a6ba
-sha1 gcc-14.2.0.tar.gz d4d09500ace1dc9ab69f6c4c791de012da8607ed
-sha256 gcc-14.2.0.tar.gz 7d376d445f93126dc545e2c0086d0f647c3094aae081cdb78f42ce2bc25e7293
-sha512 gcc-14.2.0.tar.gz d6828a5702ff4b667cc3e1e7e9f180191041b7efb68ffdc54248a42aa1799f41db6743acfe9ab74ea59977ba06f425fcf943a9fe3a77f9db706fc6bdbd657c1a
diff --git a/packages/gcc/14.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch b/packages/gcc/14.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch
deleted file mode 100644
index 487a28c3..00000000
--- a/packages/gcc/14.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-From b0f9ac365f91952f6f920c8e6aa4ddb819f47cc8 Mon Sep 17 00:00:00 2001
-From: Keith Packard <keithp@keithp.com>
-Date: Tue, 23 Aug 2022 22:13:08 -0700
-Subject: [PATCH] picolibc: Add custom spec file fragments for using
- picolibc
-
-The '--oslib=' option allows targets to insert an OS library after the
-C library in the LIB_PATH spec file fragment. This library maps a few
-POSIX APIs used by picolibc to underlying system capabilities.
-
-The '--crt0=' option allows targets to use an alternate crt0 in place
-of the usual one as provided by Picolibc.
-
-For example, picolibc provides 'libsemihost' and 'crt0-semihost.o' on
-various targets which maps some POSIX APIs to semihosting capabilities
-and signals the semihosting environment when 'main' returns. These
-would be used by specifying --oslib=semihost --crt0=semihost.
-
-This patch also takes advantage of the IN_GPP conditional when
-building g++ to elide exception handling contents from the executable
-when not linking with the g++ driver.
-
-Signed-off-by: Keith Packard <keithp@keithp.com>
----
- gcc/config.gcc | 7 +++++++
- gcc/config/picolibc.h | 44 ++++++++++++++++++++++++++++++++++++++++++++
- gcc/config/picolibc.opt | 33 +++++++++++++++++++++++++++++++++
- 3 files changed, 84 insertions(+)
- create mode 100644 gcc/config/picolibc.h
- create mode 100644 gcc/config/picolibc.opt
-
---- a/gcc/config.gcc
-+++ b/gcc/config.gcc
-@@ -5931,3 +5931,10 @@
- tm_defines="$tm_defines DEFAULT_LIBC=$default_libc"
- ;;
- esac
-+
-+case "$default_libc" in
-+ LIBC_PICOLIBC)
-+ extra_options="${extra_options} picolibc.opt"
-+ tm_file="${tm_file} picolibc.h"
-+ ;;
-+esac
---- /dev/null
-+++ b/gcc/config/picolibc.h
-@@ -0,0 +1,44 @@
-+/* Configuration common to all targets running Picolibc.
-+ Copyright (C) 2023 Free Software Foundation, Inc.
-+
-+ This file is part of GCC.
-+
-+ GCC is free software; you can redistribute it and/or modify it
-+ under the terms of the GNU General Public License as published
-+ by the Free Software Foundation; either version 3, or (at your
-+ option) any later version.
-+
-+ GCC is distributed in the hope that it will be useful, but WITHOUT
-+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
-+ License for more details.
-+
-+ Under Section 7 of GPL version 3, you are granted additional
-+ permissions described in the GCC Runtime Library Exception, version
-+ 3.1, as published by the Free Software Foundation.
-+
-+ You should have received a copy of the GNU General Public License and
-+ a copy of the GCC Runtime Library Exception along with this program;
-+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#ifdef IN_GPP
-+#define PICOLIBC_LD "picolibcpp.ld"
-+#define PICOLIBC_BEGIN " crtbegin%O%s"
-+#define PICOLIBC_END "crtend%O%s"
-+#else
-+#define PICOLIBC_LD "picolibc.ld"
-+#define PICOLIBC_BEGIN ""
-+#define PICOLIBC_END ""
-+#endif
-+
-+#undef LIB_SPEC
-+#define LIB_SPEC "%{!T:-T" PICOLIBC_LD "} --start-group -lc %{-oslib=*:-l%*} %(libgcc) --end-group"
-+
-+#undef STARTFILE_SPEC
-+#define STARTFILE_SPEC "%{-crt0=*:crt0-%*%O%s; :crt0%O%s}" PICOLIBC_BEGIN
-+
-+#undef ENDFILE_SPEC
-+#define ENDFILE_SPEC PICOLIBC_END
-+
-+#define EH_TABLES_CAN_BE_READ_ONLY 1
---- /dev/null
-+++ b/gcc/config/picolibc.opt
-@@ -0,0 +1,33 @@
-+; Processor-independent options for picolibc.
-+;
-+; Copyright (C) 2022 Free Software Foundation, Inc.
-+;
-+; This file is part of GCC.
-+;
-+; GCC is free software; you can redistribute it and/or modify it under
-+; the terms of the GNU General Public License as published by the Free
-+; Software Foundation; either version 3, or (at your option) any later
-+; version.
-+;
-+; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-+; WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+; for more details.
-+;
-+; You should have received a copy of the GNU General Public License
-+; along with GCC; see the file COPYING3. If not see
-+; <http://www.gnu.org/licenses/>.
-+
-+-oslib
-+Driver Separate Alias(-oslib=)
-+
-+-oslib=
-+Driver Joined
-+Specify an OS support library to load after libc.
-+
-+-crt0
-+Driver Separate Alias(-crt0=)
-+
-+-crt0=
-+Driver Joined
-+Specify an alternate startup file.
diff --git a/packages/gcc/14.2.0/version.desc b/packages/gcc/14.2.0/version.desc
deleted file mode 100644
index e69de29b..00000000
--- a/packages/gcc/14.2.0/version.desc
+++ /dev/null