Mercurial > mxe-octave
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)