changeset 7236:015881636607 default tip @

GCC: Update to 14.1.0 * src/build-gcc.mk, src/native-gcc.mk: Update version and checksum. * src/build-gcc-2-ice-no-omit-frame-pointer.patch, src/native-gcc-1-ice-no-omit-frame-pointer.patch: Cherry-pick patch from upstream to fix ICE. * dist-files.mk: Add new files to list.
author Markus Mützel <markus.muetzel@gmx.de>
date Mon, 03 Jun 2024 21:33:28 +0200
parents 4334dcf6f544
children
files dist-files.mk src/build-gcc-2-ice-no-omit-frame-pointer.patch src/build-gcc.mk src/native-gcc-1-ice-no-omit-frame-pointer.patch src/native-gcc.mk
diffstat 5 files changed, 78 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/dist-files.mk	Mon Jun 03 21:18:26 2024 +0200
+++ b/dist-files.mk	Mon Jun 03 21:33:28 2024 +0200
@@ -29,6 +29,7 @@
   build-flex.mk \
   build-gawk.mk \
   build-gcc-1-msgfmt.patch \
+  build-gcc-2-ice-no-omit-frame-pointer.patch \
   build-gcc.mk \
   build-gettext.mk \
   build-gperf.mk \
@@ -446,6 +447,7 @@
   mxml-test.c \
   mxml.mk \
   native-binutils.mk \
+  native-gcc-1-ice-no-omit-frame-pointer.patch \
   native-gcc.mk \
   ncurses-1-gcc-5-fix.patch \
   ncurses.mk \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/build-gcc-2-ice-no-omit-frame-pointer.patch	Mon Jun 03 21:33:28 2024 +0200
@@ -0,0 +1,36 @@
+From f14ef5cfd4c1ba1d34afda9174935e40d3c0a3ce Mon Sep 17 00:00:00 2001
+From: Eric Botcazou <ebotcazou@adacore.com>
+Date: Wed, 22 May 2024 18:10:39 +0200
+Subject: [PATCH] Fix internal error in seh_cfa_offset with -O2
+ -fno-omit-frame-pointer
+
+The problem directly comes from the -ffold-mem-offsets pass messing up with
+the prologue and the frame-related instructions, which is a no-no with SEH,
+so the fix simply disconnects the pass in these circumstances.
+
+gcc/
+	PR rtl-optimization/115038
+	* fold-mem-offsets.cc (fold_offsets): Return 0 if the defining
+	instruction of the register is frame related.
+
+gcc/testsuite/
+	* g++.dg/opt/fmo1.C: New test.
+---
+ gcc/fold-mem-offsets.cc         |  2 +-
+ gcc/testsuite/g++.dg/opt/fmo1.C | 25 +++++++++++++++++++++++++
+ 2 files changed, 26 insertions(+), 1 deletion(-)
+ create mode 100644 gcc/testsuite/g++.dg/opt/fmo1.C
+
+diff --git a/gcc/fold-mem-offsets.cc b/gcc/fold-mem-offsets.cc
+index 2e15b05529e..84b9623058b 100644
+--- a/gcc/fold-mem-offsets.cc
++++ b/gcc/fold-mem-offsets.cc
+@@ -491,7 +491,7 @@ fold_offsets (rtx_insn *insn, rtx reg, bool analyze, bitmap foldable_insns)
+ {
+   rtx_insn *def = get_single_def_in_bb (insn, reg);
+ 
+-  if (!def || GET_CODE (PATTERN (def)) != SET)
++  if (!def || RTX_FRAME_RELATED_P (def) || GET_CODE (PATTERN (def)) != SET)
+     return 0;
+ 
+   rtx dest = SET_DEST (PATTERN (def));
--- a/src/build-gcc.mk	Mon Jun 03 21:18:26 2024 +0200
+++ b/src/build-gcc.mk	Mon Jun 03 21:33:28 2024 +0200
@@ -3,8 +3,8 @@
 
 PKG             := build-gcc
 $(PKG)_IGNORE   :=
-$(PKG)_VERSION  := 13.2.0
-$(PKG)_CHECKSUM := 5f95b6d042fb37d45c6cbebfc91decfbc4fb493c
+$(PKG)_VERSION  := 14.1.0
+$(PKG)_CHECKSUM := 0aec8d432b8473559942a45c12459a5db3a04618
 $(PKG)_SUBDIR   := gcc-$($(PKG)_VERSION)
 $(PKG)_FILE     := gcc-$($(PKG)_VERSION).tar.xz
 $(PKG)_URL      := ftp://ftp.gnu.org/pub/gnu/gcc/gcc-$($(PKG)_VERSION)/$($(PKG)_FILE)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/native-gcc-1-ice-no-omit-frame-pointer.patch	Mon Jun 03 21:33:28 2024 +0200
@@ -0,0 +1,36 @@
+From f14ef5cfd4c1ba1d34afda9174935e40d3c0a3ce Mon Sep 17 00:00:00 2001
+From: Eric Botcazou <ebotcazou@adacore.com>
+Date: Wed, 22 May 2024 18:10:39 +0200
+Subject: [PATCH] Fix internal error in seh_cfa_offset with -O2
+ -fno-omit-frame-pointer
+
+The problem directly comes from the -ffold-mem-offsets pass messing up with
+the prologue and the frame-related instructions, which is a no-no with SEH,
+so the fix simply disconnects the pass in these circumstances.
+
+gcc/
+	PR rtl-optimization/115038
+	* fold-mem-offsets.cc (fold_offsets): Return 0 if the defining
+	instruction of the register is frame related.
+
+gcc/testsuite/
+	* g++.dg/opt/fmo1.C: New test.
+---
+ gcc/fold-mem-offsets.cc         |  2 +-
+ gcc/testsuite/g++.dg/opt/fmo1.C | 25 +++++++++++++++++++++++++
+ 2 files changed, 26 insertions(+), 1 deletion(-)
+ create mode 100644 gcc/testsuite/g++.dg/opt/fmo1.C
+
+diff --git a/gcc/fold-mem-offsets.cc b/gcc/fold-mem-offsets.cc
+index 2e15b05529e..84b9623058b 100644
+--- a/gcc/fold-mem-offsets.cc
++++ b/gcc/fold-mem-offsets.cc
+@@ -491,7 +491,7 @@ fold_offsets (rtx_insn *insn, rtx reg, bool analyze, bitmap foldable_insns)
+ {
+   rtx_insn *def = get_single_def_in_bb (insn, reg);
+ 
+-  if (!def || GET_CODE (PATTERN (def)) != SET)
++  if (!def || RTX_FRAME_RELATED_P (def) || GET_CODE (PATTERN (def)) != SET)
+     return 0;
+ 
+   rtx dest = SET_DEST (PATTERN (def));
--- a/src/native-gcc.mk	Mon Jun 03 21:18:26 2024 +0200
+++ b/src/native-gcc.mk	Mon Jun 03 21:33:28 2024 +0200
@@ -3,8 +3,8 @@
 
 PKG             := native-gcc
 $(PKG)_IGNORE   :=
-$(PKG)_VERSION  := 13.2.0
-$(PKG)_CHECKSUM := 5f95b6d042fb37d45c6cbebfc91decfbc4fb493c
+$(PKG)_VERSION  := 14.1.0
+$(PKG)_CHECKSUM := 0aec8d432b8473559942a45c12459a5db3a04618
 $(PKG)_SUBDIR   := gcc-$($(PKG)_VERSION)
 $(PKG)_FILE     := gcc-$($(PKG)_VERSION).tar.xz
 $(PKG)_URL      := ftp://ftp.gnu.org/pub/gnu/gcc/gcc-$($(PKG)_VERSION)/$($(PKG)_FILE)