cross/gcc-*: upgrade to 10.2.0-r2
This commit is contained in:
parent
aced152afc
commit
d425719887
93 changed files with 2214 additions and 171 deletions
|
@ -1,7 +1,7 @@
|
|||
From 399f9e74a691ca6272d460d72d1b47afcad84752 Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Fri, 26 Jan 2018 20:32:50 +0000
|
||||
Subject: [PATCH 01/28] posix_memalign
|
||||
Subject: [PATCH 01/30] posix_memalign
|
||||
|
||||
---
|
||||
gcc/config/i386/pmm_malloc.h | 9 +++++----
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 0e993b1b9a33910193862d76facf34bdbe58ed01 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:59:00 +0400
|
||||
Subject: [PATCH 02/28] gcc: poison-system-directories
|
||||
Subject: [PATCH 02/30] gcc: poison-system-directories
|
||||
|
||||
Add /sw/include and /opt/include based on the original
|
||||
zecke-no-host-includes.patch patch. The original patch checked for
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From a35a55940c3402f8ebb510ec7d8bc67e85051277 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:45:49 +0000
|
||||
Subject: [PATCH 03/28] Turn on -Wl,-z,relro,-z,now by default.
|
||||
Subject: [PATCH 03/30] Turn on -Wl,-z,relro,-z,now by default.
|
||||
|
||||
---
|
||||
gcc/doc/invoke.texi | 3 +++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From d2865d0a184ef59be8893dd34edf5037c4bf48f7 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:46:22 +0000
|
||||
Subject: [PATCH 04/28] Turn on -D_FORTIFY_SOURCE=2 by default for C, C++,
|
||||
Subject: [PATCH 04/30] Turn on -D_FORTIFY_SOURCE=2 by default for C, C++,
|
||||
ObjC, ObjC++, if the optimization level is > 0
|
||||
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 872e0a15a2b74cd6b6ba58e2e7e1605543ea36bd Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:46:56 +0000
|
||||
Subject: [PATCH 05/28] On linux targets pass --as-needed by default to the
|
||||
Subject: [PATCH 05/30] On linux targets pass --as-needed by default to the
|
||||
linker, but always link the sanitizer libraries with --no-as-needed.
|
||||
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 5e20872b8cc916cb457c63c6cd970c4fcba47bbb Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:47:43 +0000
|
||||
Subject: [PATCH 06/28] Enable -Wformat and -Wformat-security by default.
|
||||
Subject: [PATCH 06/30] Enable -Wformat and -Wformat-security by default.
|
||||
|
||||
---
|
||||
gcc/c-family/c.opt | 4 ++--
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 1bcf7e30226852db956becebaffdfe2738923423 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:48:24 +0000
|
||||
Subject: [PATCH 07/28] Enable -Wtrampolines by default.
|
||||
Subject: [PATCH 07/30] Enable -Wtrampolines by default.
|
||||
|
||||
---
|
||||
gcc/common.opt | 2 +-
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 23fd86ff34670873dd294bd87b93f45c3624903a Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:49:40 +0000
|
||||
Subject: [PATCH 08/28] Disable ssp on -nostdlib, -nodefaultlibs and
|
||||
Subject: [PATCH 08/30] Disable ssp on -nostdlib, -nodefaultlibs and
|
||||
-ffreestanding Change the buffer size.
|
||||
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From d27d7936ecd9f357a3c6ee05e6548f8a68fdd4b7 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:50:33 +0000
|
||||
Subject: [PATCH 09/28] Ensure that msgfmt doesn't encounter problems during
|
||||
Subject: [PATCH 09/30] Ensure that msgfmt doesn't encounter problems during
|
||||
gcc bootstrapping.
|
||||
|
||||
Solves error messages like the following:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 2ec258d6d31e2c0c614c5086acee84a87768a67c Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:52:07 +0000
|
||||
Subject: [PATCH 10/28] Don't declare asprintf if defined as a macro.
|
||||
Subject: [PATCH 10/30] Don't declare asprintf if defined as a macro.
|
||||
|
||||
---
|
||||
include/libiberty.h | 3 +++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 4f6fd2272f57620da399d0f841fce12b9db3b2d1 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:53:00 +0000
|
||||
Subject: [PATCH 11/28] libiberty: copy PIC objects during build process
|
||||
Subject: [PATCH 11/30] libiberty: copy PIC objects during build process
|
||||
|
||||
---
|
||||
libiberty/Makefile.in | 1 +
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From cef5e0336cfdf4afd0e01fa9e562f686b234697a Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:53:36 +0000
|
||||
Subject: [PATCH 12/28] libitm: disable FORTIFY
|
||||
Subject: [PATCH 12/30] libitm: disable FORTIFY
|
||||
|
||||
---
|
||||
libitm/configure.tgt | 10 ++++++++++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From d31721459e363e49dfe0a7797300864d9cef92f0 Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Sat, 24 Oct 2015 20:09:53 +0000
|
||||
Subject: [PATCH 13/28] libgcc_s
|
||||
Subject: [PATCH 13/30] libgcc_s
|
||||
|
||||
---
|
||||
gcc/config/i386/i386-expand.c | 4 ++--
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From f64f853eae3b390adbbc9b74a336d93918e6dca4 Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Sat, 7 Nov 2015 02:08:05 +0000
|
||||
Subject: [PATCH 14/28] nopie
|
||||
Subject: [PATCH 14/30] nopie
|
||||
|
||||
---
|
||||
gcc/configure | 27 +++++++++++++++++++++++++++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 37dace030c1402a8e6734a0fc59e18717ce1a2ef Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:57:09 +0000
|
||||
Subject: [PATCH 15/28] libffi: use __linux__ instead of __gnu_linux__ for musl
|
||||
Subject: [PATCH 15/30] libffi: use __linux__ instead of __gnu_linux__ for musl
|
||||
|
||||
---
|
||||
libffi/src/closures.c | 2 +-
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 7fc386a2e629e859968da4eb4d0ff4983cb3b76f Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:57:51 +0000
|
||||
Subject: [PATCH 16/28] dlang: update zlib binding
|
||||
Subject: [PATCH 16/30] dlang: update zlib binding
|
||||
|
||||
---
|
||||
libphobos/src/std/zlib.d | 266 ++++++++++++++++++++++++++++-----------
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From ef5f7880cff27a2b92952ce53a207d5dd896923b Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:58:22 +0000
|
||||
Subject: [PATCH 17/28] dlang: fix fcntl on mips, add libucontext dep
|
||||
Subject: [PATCH 17/30] dlang: fix fcntl on mips, add libucontext dep
|
||||
|
||||
---
|
||||
libphobos/configure.tgt | 1 +
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From b675e0383262d6d702f5b732e4459d3e2c2a4891 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:59:16 +0000
|
||||
Subject: [PATCH 18/28] ada: fix shared linking
|
||||
Subject: [PATCH 18/30] ada: fix shared linking
|
||||
|
||||
---
|
||||
gcc/ada/link.c | 12 ++++++------
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 0ea91dd6f8d856d5b589c2a3e95469fea06e7094 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:59:43 +0000
|
||||
Subject: [PATCH 19/28] build: fix CXXFLAGS_FOR_BUILD passing
|
||||
Subject: [PATCH 19/30] build: fix CXXFLAGS_FOR_BUILD passing
|
||||
|
||||
---
|
||||
Makefile.in | 1 +
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 9684a815e1cbe854383c3c511e1d84d43c46ec94 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:00:17 +0000
|
||||
Subject: [PATCH 20/28] libstdc++: futex: add time64 compatibility
|
||||
Subject: [PATCH 20/30] libstdc++: futex: add time64 compatibility
|
||||
|
||||
---
|
||||
libstdc++-v3/src/c++11/futex.cc | 8 ++++++++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From a0708ec975c01b049d254dc51179898966bf8a52 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:01:06 +0000
|
||||
Subject: [PATCH 21/28] add fortify-headers paths
|
||||
Subject: [PATCH 21/30] add fortify-headers paths
|
||||
|
||||
---
|
||||
gcc/config/linux.h | 2 ++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 740342a0e4b0b3af498964440918abba1a27ba33 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
|
||||
Date: Fri, 21 Aug 2020 07:03:00 +0000
|
||||
Subject: [PATCH 22/28] Alpine musl package provides libssp_nonshared.a. We
|
||||
Subject: [PATCH 22/30] Alpine musl package provides libssp_nonshared.a. We
|
||||
link to it unconditionally, as otherwise we get link failures if some objects
|
||||
are -fstack-protector built and final link happens with -fno-stack-protector.
|
||||
This seems to be the common case when bootstrapping gcc, the piepatches do
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 775adf35d6f34f61947fc28a2bdbfa7e881c40d5 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:03:42 +0000
|
||||
Subject: [PATCH 23/28] DP: Use --push-state/--pop-state for gold as well when
|
||||
Subject: [PATCH 23/30] DP: Use --push-state/--pop-state for gold as well when
|
||||
linking libtsan.
|
||||
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 717090cf538f765db1730956c512a43f2d52a802 Mon Sep 17 00:00:00 2001
|
||||
From: Nils Andreas Svee <me@lochnair.net>
|
||||
Date: Thu, 21 Dec 2017 03:14:33 +0100
|
||||
Subject: [PATCH 24/28] Pure 64-bit MIPS
|
||||
Subject: [PATCH 24/30] Pure 64-bit MIPS
|
||||
|
||||
---
|
||||
gcc/config/mips/mips.h | 8 ++++----
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From f73cf8d2f8f4eee71fc2ba850672e69f509a4486 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:04:40 +0000
|
||||
Subject: [PATCH 25/28] use pure 64-bit configuration where appropriate
|
||||
Subject: [PATCH 25/30] use pure 64-bit configuration where appropriate
|
||||
|
||||
---
|
||||
gcc/config/aarch64/t-aarch64-linux | 2 +-
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 8472f6d0037dcd19c44b1e95d95fbf937b3823e6 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:05:41 +0000
|
||||
Subject: [PATCH 26/28] always build libgcc_eh.a
|
||||
Subject: [PATCH 26/30] always build libgcc_eh.a
|
||||
|
||||
highly inspired by:
|
||||
http://landley.net/hg/aboriginal/file/7e0747a665ab/sources/patches/gcc-core-libgcceh.patch
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 4e1b3a26f558e7693853d3600ee677705e67406c Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:06:30 +0000
|
||||
Subject: [PATCH 27/28] ada: libgnarl compatibility for musl
|
||||
Subject: [PATCH 27/30] ada: libgnarl compatibility for musl
|
||||
|
||||
---
|
||||
gcc/ada/libgnarl/s-osinte__linux.ads | 11 ------
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 5e3d7d2f1e2448b6c5eb207f9251c437629e43bc Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:07:48 +0000
|
||||
Subject: [PATCH 28/28] ada: musl support fixes
|
||||
Subject: [PATCH 28/30] ada: musl support fixes
|
||||
|
||||
---
|
||||
gcc/ada/Makefile.rtl | 10 +++++-----
|
||||
|
|
|
@ -0,0 +1,520 @@
|
|||
From d6599f89ba558ec2a68d4bc4af15cf3513218054 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Sandiford <richard.sandiford@arm.com>
|
||||
Date: Mon, 3 Aug 2020 09:48:36 +0100
|
||||
Subject: [PATCH 29/30] c: Fix bogus vector initialisation error [PR96377]
|
||||
|
||||
One of the problems in this PR was that if we had:
|
||||
|
||||
vector_type1 array[] = { vector_value1 };
|
||||
|
||||
process_init_element would only treat vector_value1 as initialising
|
||||
a vector_type1 if they had the same TYPE_MAIN_VARIANT. This has
|
||||
several problems:
|
||||
|
||||
(1) It gives confusing error messages if the vector types are
|
||||
incompatible. (Tested by gcc.dg/pr96377-1.c.)
|
||||
|
||||
(2) It means that we reject code that should be valid with
|
||||
-flax-vector-conversions. (Tested by gcc.dg/pr96377-2.c.)
|
||||
|
||||
(3) On arm and aarch64 targets, it means that we reject some
|
||||
initializers that mix Advanced SIMD and standard GNU vectors.
|
||||
These vectors have traditionally had different TYPE_MAIN_VARIANTs
|
||||
because they have different mangling schemes. (Tested by
|
||||
gcc.dg/pr96377-[3-6].c.)
|
||||
|
||||
(4) It means that we reject SVE initializers that should be valid.
|
||||
(Tested by gcc.target/aarch64/sve/gnu_vectors_[34].c.)
|
||||
|
||||
(5) After r11-1741-g:31427b974ed7b7dd54e2 we reject:
|
||||
|
||||
arm_neon_type1 array[] = { k ^ arm_neon_value1 };
|
||||
|
||||
because applying the binary operator to arm_neon_value1 strips
|
||||
the "Advanced SIMD type" attributes that were added in that patch.
|
||||
Stripping the attributes is problematic for other reasons though,
|
||||
so that still needs to be fixed separately.
|
||||
|
||||
g++.target/aarch64/sve/gnu_vectors_[34].C already pass.
|
||||
|
||||
gcc/c/
|
||||
PR c/96377
|
||||
* c-typeck.c (process_init_element): Split test for whether to
|
||||
recurse into a record, union or array into...
|
||||
(initialize_elementwise_p): ...this new function. Don't recurse
|
||||
into a vector type if the initialization value is also a vector.
|
||||
|
||||
gcc/testsuite/
|
||||
PR c/96377
|
||||
* gcc.dg/pr96377-1.c: New test.
|
||||
* gcc.dg/pr96377-2.c: Likewise.
|
||||
* gcc.dg/pr96377-3.c: Likewise.
|
||||
* gcc.dg/pr96377-4.c: Likewise.
|
||||
* gcc.dg/pr96377-5.c: Likewise.
|
||||
* gcc.dg/pr96377-6.c: Likewise.
|
||||
* gcc.target/aarch64/pr96377-1.c: Likewise.
|
||||
* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c: Likewise.
|
||||
* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c: Likewise.
|
||||
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C: Likewise.
|
||||
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C: Likewise.
|
||||
|
||||
(cherry picked from commit 7d599ad27b9bcf5165f87710f1abc64bbabd06ae)
|
||||
---
|
||||
gcc/c/c-typeck.c | 59 ++++++++++++++-----
|
||||
.../sve/acle/general-c++/gnu_vectors_3.C | 15 +++++
|
||||
.../sve/acle/general-c++/gnu_vectors_4.C | 15 +++++
|
||||
gcc/testsuite/gcc.dg/pr96377-1.c | 32 ++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-2.c | 31 ++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-3.c | 33 +++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-4.c | 32 ++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-5.c | 33 +++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-6.c | 32 ++++++++++
|
||||
gcc/testsuite/gcc.target/aarch64/pr96377-1.c | 20 +++++++
|
||||
.../sve/acle/general-c/gnu_vectors_3.c | 15 +++++
|
||||
.../sve/acle/general-c/gnu_vectors_4.c | 15 +++++
|
||||
12 files changed, 317 insertions(+), 15 deletions(-)
|
||||
create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
|
||||
create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-1.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-2.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-3.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-4.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-5.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-6.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/aarch64/pr96377-1.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
|
||||
|
||||
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
|
||||
index eb4b641e6bb..58762f10a93 100644
|
||||
--- a/gcc/c/c-typeck.c
|
||||
+++ b/gcc/c/c-typeck.c
|
||||
@@ -9910,6 +9910,47 @@ output_pending_init_elements (int all, struct obstack * braced_init_obstack)
|
||||
goto retry;
|
||||
}
|
||||
|
||||
+/* Expression VALUE coincides with the start of type TYPE in a braced
|
||||
+ initializer. Return true if we should treat VALUE as initializing
|
||||
+ the first element of TYPE, false if we should treat it as initializing
|
||||
+ TYPE as a whole.
|
||||
+
|
||||
+ If the initializer is clearly invalid, the question becomes:
|
||||
+ which choice gives the best error message? */
|
||||
+
|
||||
+static bool
|
||||
+initialize_elementwise_p (tree type, tree value)
|
||||
+{
|
||||
+ if (type == error_mark_node || value == error_mark_node)
|
||||
+ return false;
|
||||
+
|
||||
+ gcc_checking_assert (TYPE_MAIN_VARIANT (type) == type);
|
||||
+
|
||||
+ tree value_type = TREE_TYPE (value);
|
||||
+ if (value_type == error_mark_node)
|
||||
+ return false;
|
||||
+
|
||||
+ /* GNU vectors can be initialized elementwise. However, treat any
|
||||
+ kind of vector value as initializing the vector type as a whole,
|
||||
+ regardless of whether the value is a GNU vector. Such initializers
|
||||
+ are valid if and only if they would have been valid in a non-braced
|
||||
+ initializer like:
|
||||
+
|
||||
+ TYPE foo = VALUE;
|
||||
+
|
||||
+ so recursing into the vector type would be at best confusing or at
|
||||
+ worst wrong. For example, when -flax-vector-conversions is in effect,
|
||||
+ it's possible to initialize a V8HI from a V4SI, even though the vectors
|
||||
+ have different element types and different numbers of elements. */
|
||||
+ if (gnu_vector_type_p (type))
|
||||
+ return !VECTOR_TYPE_P (value_type);
|
||||
+
|
||||
+ if (AGGREGATE_TYPE_P (type))
|
||||
+ return type != TYPE_MAIN_VARIANT (value_type);
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
/* Add one non-braced element to the current constructor level.
|
||||
This adjusts the current position within the constructor's type.
|
||||
This may also start or terminate implicit levels
|
||||
@@ -10089,11 +10130,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
|
||||
/* Otherwise, if we have come to a subaggregate,
|
||||
and we don't have an element of its type, push into it. */
|
||||
else if (value.value != NULL_TREE
|
||||
- && value.value != error_mark_node
|
||||
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
|
||||
- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
|
||||
- || fieldcode == UNION_TYPE
|
||||
- || gnu_vector_type_p (fieldtype)))
|
||||
+ && initialize_elementwise_p (fieldtype, value.value))
|
||||
{
|
||||
push_init_level (loc, 1, braced_init_obstack);
|
||||
continue;
|
||||
@@ -10181,11 +10218,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
|
||||
/* Otherwise, if we have come to a subaggregate,
|
||||
and we don't have an element of its type, push into it. */
|
||||
else if (value.value != NULL_TREE
|
||||
- && value.value != error_mark_node
|
||||
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
|
||||
- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
|
||||
- || fieldcode == UNION_TYPE
|
||||
- || gnu_vector_type_p (fieldtype)))
|
||||
+ && initialize_elementwise_p (fieldtype, value.value))
|
||||
{
|
||||
push_init_level (loc, 1, braced_init_obstack);
|
||||
continue;
|
||||
@@ -10224,11 +10257,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
|
||||
/* Otherwise, if we have come to a subaggregate,
|
||||
and we don't have an element of its type, push into it. */
|
||||
else if (value.value != NULL_TREE
|
||||
- && value.value != error_mark_node
|
||||
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != elttype
|
||||
- && (eltcode == RECORD_TYPE || eltcode == ARRAY_TYPE
|
||||
- || eltcode == UNION_TYPE
|
||||
- || gnu_vector_type_p (elttype)))
|
||||
+ && initialize_elementwise_p (elttype, value.value))
|
||||
{
|
||||
push_init_level (loc, 1, braced_init_obstack);
|
||||
continue;
|
||||
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
|
||||
new file mode 100644
|
||||
index 00000000000..e607d58d726
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* { dg-options "-msve-vector-bits=256" } */
|
||||
+
|
||||
+#include <arm_sve.h>
|
||||
+
|
||||
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
|
||||
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
|
||||
+
|
||||
+void
|
||||
+f (svuint8_t sve_u1, svint8_t sve_s1,
|
||||
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
|
||||
+{
|
||||
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
|
||||
+ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "cannot convert" }
|
||||
+ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "cannot convert" }
|
||||
+}
|
||||
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
|
||||
new file mode 100644
|
||||
index 00000000000..ac4e0d12ff8
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
|
||||
+
|
||||
+#include <arm_sve.h>
|
||||
+
|
||||
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
|
||||
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
|
||||
+
|
||||
+void
|
||||
+f (svuint8_t sve_u1, svint8_t sve_s1,
|
||||
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
|
||||
+{
|
||||
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
|
||||
+ gnu_uint8_t arr2[] = { gnu_s1 };
|
||||
+ gnu_uint8_t arr3[] = { sve_s1 };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-1.c b/gcc/testsuite/gcc.dg/pr96377-1.c
|
||||
new file mode 100644
|
||||
index 00000000000..2bf3f816331
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-1.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* { dg-options "-fno-lax-vector-conversions" } */
|
||||
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { v8hi x; v4si y; };
|
||||
+union u1 { v8hi x; v4si y; };
|
||||
+union u2 { v4si s; v8hi y; };
|
||||
+
|
||||
+void
|
||||
+foo (v4si i, v8hi h)
|
||||
+{
|
||||
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
|
||||
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-2.c b/gcc/testsuite/gcc.dg/pr96377-2.c
|
||||
new file mode 100644
|
||||
index 00000000000..f58b06d9076
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-2.c
|
||||
@@ -0,0 +1,31 @@
|
||||
+/* { dg-options "-flax-vector-conversions" } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { v8hi x; v4si y; };
|
||||
+union u1 { v8hi x; v4si y; };
|
||||
+union u2 { v4si s; v8hi y; };
|
||||
+
|
||||
+void
|
||||
+foo (v4si i, v8hi h)
|
||||
+{
|
||||
+ struct s x1 = { i, i };
|
||||
+ struct s x2 = { h, h };
|
||||
+ struct s x3 = { i, h };
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i };
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h };
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h };
|
||||
+ v4si z3[] = { h, i };
|
||||
+ v4si z4[] = { h, h };
|
||||
+ v8hi z5[] = { i, i };
|
||||
+ v8hi z6[] = { i, h };
|
||||
+ v8hi z7[] = { h, i };
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-3.c b/gcc/testsuite/gcc.dg/pr96377-3.c
|
||||
new file mode 100644
|
||||
index 00000000000..66dce01f277
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-3.c
|
||||
@@ -0,0 +1,33 @@
|
||||
+/* { dg-do compile { target aarch64*-*-* } } */
|
||||
+/* { dg-options "-fno-lax-vector-conversions" } */
|
||||
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { v8hi x; v4si y; };
|
||||
+union u1 { v8hi x; v4si y; };
|
||||
+union u2 { v4si s; v8hi y; };
|
||||
+
|
||||
+void
|
||||
+foo (__Int32x4_t i, __Int16x8_t h)
|
||||
+{
|
||||
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
|
||||
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-4.c b/gcc/testsuite/gcc.dg/pr96377-4.c
|
||||
new file mode 100644
|
||||
index 00000000000..f7aaf490031
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-4.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* { dg-do compile { target aarch64*-*-* } } */
|
||||
+/* { dg-options "-flax-vector-conversions" } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { v8hi x; v4si y; };
|
||||
+union u1 { v8hi x; v4si y; };
|
||||
+union u2 { v4si s; v8hi y; };
|
||||
+
|
||||
+void
|
||||
+foo (__Int32x4_t i, __Int16x8_t h)
|
||||
+{
|
||||
+ struct s x1 = { i, i };
|
||||
+ struct s x2 = { h, h };
|
||||
+ struct s x3 = { i, h };
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i };
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h };
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h };
|
||||
+ v4si z3[] = { h, i };
|
||||
+ v4si z4[] = { h, h };
|
||||
+ v8hi z5[] = { i, i };
|
||||
+ v8hi z6[] = { i, h };
|
||||
+ v8hi z7[] = { h, i };
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-5.c b/gcc/testsuite/gcc.dg/pr96377-5.c
|
||||
new file mode 100644
|
||||
index 00000000000..3d0c24befa6
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-5.c
|
||||
@@ -0,0 +1,33 @@
|
||||
+/* { dg-do compile { target aarch64*-*-* } } */
|
||||
+/* { dg-options "-fno-lax-vector-conversions" } */
|
||||
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { __Int16x8_t x; __Int32x4_t y; };
|
||||
+union u1 { __Int16x8_t x; __Int32x4_t y; };
|
||||
+union u2 { __Int32x4_t s; __Int16x8_t y; };
|
||||
+
|
||||
+void
|
||||
+foo (v4si i, v8hi h)
|
||||
+{
|
||||
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__Int16x8_t" }
|
||||
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-6.c b/gcc/testsuite/gcc.dg/pr96377-6.c
|
||||
new file mode 100644
|
||||
index 00000000000..165327fa292
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-6.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* { dg-do compile { target aarch64*-*-* } } */
|
||||
+/* { dg-options "-flax-vector-conversions" } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { __Int16x8_t x; __Int32x4_t y; };
|
||||
+union u1 { __Int16x8_t x; __Int32x4_t y; };
|
||||
+union u2 { __Int32x4_t s; __Int16x8_t y; };
|
||||
+
|
||||
+void
|
||||
+foo (v4si i, v8hi h)
|
||||
+{
|
||||
+ struct s x1 = { i, i };
|
||||
+ struct s x2 = { h, h };
|
||||
+ struct s x3 = { i, h };
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i };
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h };
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h };
|
||||
+ v4si z3[] = { h, i };
|
||||
+ v4si z4[] = { h, h };
|
||||
+ v8hi z5[] = { i, i };
|
||||
+ v8hi z6[] = { i, h };
|
||||
+ v8hi z7[] = { h, i };
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.target/aarch64/pr96377-1.c b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
|
||||
new file mode 100644
|
||||
index 00000000000..51e3e36edfc
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
|
||||
@@ -0,0 +1,20 @@
|
||||
+/* { dg-options "" } */
|
||||
+
|
||||
+#include <arm_neon.h>
|
||||
+
|
||||
+struct aegis128_state {
|
||||
+ uint8x16_t v[5];
|
||||
+};
|
||||
+
|
||||
+void foo(const void *key, const void *iv, const void *const0, const void *const1)
|
||||
+{
|
||||
+ uint8x16_t k = vld1q_u8(key);
|
||||
+ uint8x16_t kiv = k ^ vld1q_u8(iv);
|
||||
+ struct aegis128_state st = {{
|
||||
+ kiv,
|
||||
+ vld1q_u8(const1),
|
||||
+ vld1q_u8(const0),
|
||||
+ k ^ vld1q_u8(const0),
|
||||
+ k ^ vld1q_u8(const1),
|
||||
+ }};
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
|
||||
new file mode 100644
|
||||
index 00000000000..0f1a2b0e46b
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* { dg-options "-msve-vector-bits=256" } */
|
||||
+
|
||||
+#include <arm_sve.h>
|
||||
+
|
||||
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
|
||||
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
|
||||
+
|
||||
+void
|
||||
+f (svuint8_t sve_u1, svint8_t sve_s1,
|
||||
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
|
||||
+{
|
||||
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
|
||||
+ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "incompatible types" }
|
||||
+ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "incompatible types" }
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
|
||||
new file mode 100644
|
||||
index 00000000000..ac4e0d12ff8
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
|
||||
+
|
||||
+#include <arm_sve.h>
|
||||
+
|
||||
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
|
||||
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
|
||||
+
|
||||
+void
|
||||
+f (svuint8_t sve_u1, svint8_t sve_s1,
|
||||
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
|
||||
+{
|
||||
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
|
||||
+ gnu_uint8_t arr2[] = { gnu_s1 };
|
||||
+ gnu_uint8_t arr3[] = { sve_s1 };
|
||||
+}
|
||||
--
|
||||
2.27.0
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
From 773021143288f5bf0dca1e3ee1f908f580f6fd9c Mon Sep 17 00:00:00 2001
|
||||
From: Peter Bergner <bergner@linux.ibm.com>
|
||||
Date: Thu, 13 Aug 2020 13:40:39 -0500
|
||||
Subject: [PATCH 30/30] rs6000: ICE when using an MMA type as a function param
|
||||
or return value [PR96506]
|
||||
|
||||
PR96506 shows a problem where we ICE on illegal usage, namely using MMA
|
||||
types for function arguments and return values. The solution is to flag
|
||||
these illegal usages as errors early, before we ICE.
|
||||
|
||||
2020-08-13 Peter Bergner <bergner@linux.ibm.com>
|
||||
|
||||
gcc/
|
||||
PR target/96506
|
||||
* config/rs6000/rs6000-call.c (rs6000_promote_function_mode): Disallow
|
||||
MMA types as return values.
|
||||
(rs6000_function_arg): Disallow MMA types as function arguments.
|
||||
|
||||
gcc/testsuite/
|
||||
PR target/96506
|
||||
* gcc.target/powerpc/pr96506.c: New test.
|
||||
|
||||
(cherry picked from commit 0ad7e730c142ef6cd0ddc1491a89a7f330caa887)
|
||||
---
|
||||
gcc/config/rs6000/rs6000-call.c | 34 ++++++++++-
|
||||
gcc/testsuite/gcc.target/powerpc/pr96506.c | 66 ++++++++++++++++++++++
|
||||
2 files changed, 99 insertions(+), 1 deletion(-)
|
||||
create mode 100644 gcc/testsuite/gcc.target/powerpc/pr96506.c
|
||||
|
||||
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
|
||||
index 243601e90c1..37566780e54 100644
|
||||
--- a/gcc/config/rs6000/rs6000-call.c
|
||||
+++ b/gcc/config/rs6000/rs6000-call.c
|
||||
@@ -6076,8 +6076,30 @@ machine_mode
|
||||
rs6000_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
|
||||
machine_mode mode,
|
||||
int *punsignedp ATTRIBUTE_UNUSED,
|
||||
- const_tree, int)
|
||||
+ const_tree, int for_return)
|
||||
{
|
||||
+ /* Warning: this is a static local variable and not always NULL!
|
||||
+ This function is called multiple times for the same function
|
||||
+ and return value. PREV_FUNC is used to keep track of the
|
||||
+ first time we encounter a function's return value in order
|
||||
+ to not report an error with that return value multiple times. */
|
||||
+ static struct function *prev_func = NULL;
|
||||
+
|
||||
+ /* We do not allow MMA types being used as return values. Only report
|
||||
+ the invalid return value usage the first time we encounter it. */
|
||||
+ if (for_return
|
||||
+ && prev_func != cfun
|
||||
+ && (mode == POImode || mode == PXImode))
|
||||
+ {
|
||||
+ /* Record we have now handled function CFUN, so the next time we
|
||||
+ are called, we do not re-report the same error. */
|
||||
+ prev_func = cfun;
|
||||
+ if (TYPE_CANONICAL (type) != NULL_TREE)
|
||||
+ type = TYPE_CANONICAL (type);
|
||||
+ error ("invalid use of MMA type %qs as a function return value",
|
||||
+ IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
|
||||
+ }
|
||||
+
|
||||
PROMOTE_MODE (mode, *punsignedp, type);
|
||||
|
||||
return mode;
|
||||
@@ -7028,6 +7050,16 @@ rs6000_function_arg (cumulative_args_t cum_v, const function_arg_info &arg)
|
||||
machine_mode elt_mode;
|
||||
int n_elts;
|
||||
|
||||
+ /* We do not allow MMA types being used as function arguments. */
|
||||
+ if (mode == POImode || mode == PXImode)
|
||||
+ {
|
||||
+ if (TYPE_CANONICAL (type) != NULL_TREE)
|
||||
+ type = TYPE_CANONICAL (type);
|
||||
+ error ("invalid use of MMA operand of type %qs as a function parameter",
|
||||
+ IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
|
||||
+ return NULL_RTX;
|
||||
+ }
|
||||
+
|
||||
/* Return a marker to indicate whether CR1 needs to set or clear the
|
||||
bit that V.4 uses to say fp args were passed in registers.
|
||||
Assume that we don't need the marker for software floating point,
|
||||
diff --git a/gcc/testsuite/gcc.target/powerpc/pr96506.c b/gcc/testsuite/gcc.target/powerpc/pr96506.c
|
||||
new file mode 100644
|
||||
index 00000000000..b1b40c5a5c8
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/powerpc/pr96506.c
|
||||
@@ -0,0 +1,66 @@
|
||||
+/* PR target/96506 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-require-effective-target power10_ok } */
|
||||
+/* { dg-options "-mdejagnu-cpu=power10 -O2" } */
|
||||
+
|
||||
+extern void bar0();
|
||||
+extern void bar1();
|
||||
+extern void bar2();
|
||||
+extern void bar3();
|
||||
+
|
||||
+typedef __vector_pair vpair_t;
|
||||
+typedef __vector_quad vquad_t;
|
||||
+
|
||||
+/* Verify we flag errors on the following. */
|
||||
+
|
||||
+void
|
||||
+foo0 (void)
|
||||
+{
|
||||
+ __vector_pair v;
|
||||
+ bar0 (v); /* { dg-error "invalid use of MMA operand of type .__vector_pair. as a function parameter" } */
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+foo1 (void)
|
||||
+{
|
||||
+ vpair_t v;
|
||||
+ bar1 (v); /* { dg-error "invalid use of MMA operand of type .__vector_pair. as a function parameter" } */
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+foo2 (void)
|
||||
+{
|
||||
+ __vector_quad v;
|
||||
+ bar2 (v); /* { dg-error "invalid use of MMA operand of type .__vector_quad. as a function parameter" } */
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+foo3 (void)
|
||||
+{
|
||||
+ vquad_t v;
|
||||
+ bar3 (v); /* { dg-error "invalid use of MMA operand of type .__vector_quad. as a function parameter" } */
|
||||
+}
|
||||
+
|
||||
+__vector_pair
|
||||
+foo4 (__vector_pair *src) /* { dg-error "invalid use of MMA type .__vector_pair. as a function return value" } */
|
||||
+{
|
||||
+ return *src;
|
||||
+}
|
||||
+
|
||||
+vpair_t
|
||||
+foo5 (vpair_t *src) /* { dg-error "invalid use of MMA type .__vector_pair. as a function return value" } */
|
||||
+{
|
||||
+ return *src;
|
||||
+}
|
||||
+
|
||||
+__vector_quad
|
||||
+foo6 (__vector_quad *src) /* { dg-error "invalid use of MMA type .__vector_quad. as a function return value" } */
|
||||
+{
|
||||
+ return *src;
|
||||
+}
|
||||
+
|
||||
+vquad_t
|
||||
+foo7 (vquad_t *src) /* { dg-error "invalid use of MMA type .__vector_quad. as a function return value" } */
|
||||
+{
|
||||
+ return *src;
|
||||
+}
|
||||
--
|
||||
2.27.0
|
||||
|
|
@ -30,7 +30,7 @@ pkgver=10.2.0
|
|||
[ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target=""
|
||||
|
||||
pkgname=gcc-aarch64
|
||||
pkgrel=1
|
||||
pkgrel=2
|
||||
pkgdesc="Stage2 cross-compiler for aarch64"
|
||||
url="https://gcc.gnu.org"
|
||||
arch="x86_64"
|
||||
|
@ -201,6 +201,8 @@ source="https://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$pkgver}/gcc-${_pkg
|
|||
0026-always-build-libgcc_eh.a.patch
|
||||
0027-ada-libgnarl-compatibility-for-musl.patch
|
||||
0028-ada-musl-support-fixes.patch
|
||||
0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch
|
||||
0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch
|
||||
"
|
||||
|
||||
# gcc-4.8-build-args.patch
|
||||
|
@ -631,31 +633,33 @@ gnat() {
|
|||
}
|
||||
|
||||
sha512sums="42ae38928bd2e8183af445da34220964eb690b675b1892bbeb7cd5bb62be499011ec9a93397dba5e2fb681afadfc6f2767d03b9035b44ba9be807187ae6dc65e gcc-10.2.0.tar.xz
|
||||
5edc2dfe8e5d680c8c622b16943a1ec4e7f7db245e2fa4e54371962c048af1f074b1ed49f619f8abdf0eb97129d8b7198b4f16f06da794fe0fd6ce4d55f829fb 0001-posix_memalign.patch
|
||||
bff1c9a08d32186b94660c42823babd63729b2a050e761c514c3f23c7eac2585ddc4f748df547915fb6b2fc098f3ecc2e8d9707f3aef9bb9c6103ba92ed5f906 0002-gcc-poison-system-directories.patch
|
||||
7662cc8c6cd77a6cacb2899f4fb13d14495feb508bad9ee8ae0dd38ecddf8d45391ec636022913eece41661fbd5d336ac2130a5c08b2495eb5aff5501cff49a6 0003-Turn-on-Wl-z-relro-z-now-by-default.patch
|
||||
26303e588f37c4208c3da962972b83759daa5abaf8eaf4da331a4cf1e3a90590ad56a7f8b766795bda7b6baa69aaa9c09864f297d376feacbe4ba08249da2d8d 0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch
|
||||
4be2f8ab07e5ff2b018c633e057927446259b63cc65229f977c84b294820d1dbecc29c2e6167b3cb000a5995e7def64cd8191031ee2b2c2ec3e5b4ad70267083 0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch
|
||||
e97e619874c0edb60d826669426f96b6f09b79849538415ee1a205345a574ea292de5f324925dd1c821859a3c4873a2392e11edcd6ac6b53f6d6d389b25ffe94 0006-Enable-Wformat-and-Wformat-security-by-default.patch
|
||||
c3081e7b37dcb2e2b4381e6fcc2abfa066bb4adc3ad4bdd7bd1402a6a3ccc354bfcf713c6acb379001dd97e14e6bdc8eb2eeca6b1e45262bea3262d51394c0e6 0007-Enable-Wtrampolines-by-default.patch
|
||||
cc602c71b0893b058021cd45d239c3e9f013f68cd56f642fcdad342456bae9ea08ddf0929a6c2e6e452987d1d8c4be97dfe0314d9107e01bf6403ce97e83a30f 0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch
|
||||
0bc96d3a2afd0499e01b47a8197f9a5ead04219d0674f0dea97a4654def7dca2c50d8c005d04558212d53e4ec9fcf2bf4a3286d7a12b24eba0134aa1197abfe1 0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch
|
||||
2662eadcc54408f5c6596e24615a6771c046575a53b8aec65677fcaa699446021b8f3360efc7660d72bf004bffd98f9d4f9d64eba97dedcbb752bb3fffc5a048 0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch
|
||||
0003e594bbbf142d678f0f79fc03ff467276331a8c87016ecd5f9683abb14aea2550e6880995dd160dc92a3e4ec04e4b2323eda403d4fa8453c258c28bcc969e 0011-libiberty-copy-PIC-objects-during-build-process.patch
|
||||
209f7cfb281c3c10af2b84e1542e9093bb0fb36171c7d12ce33b1d92a70388d0aae7b1bb22a613a59e352de62927a0f8e9d3a0b4729c12f8eebacc74d29ecfdd 0012-libitm-disable-FORTIFY.patch
|
||||
e72ad6130dd5dd64ef34ff9f07cf23d310d0d530b272fa1bdc9459991dfb10eec64af3249f213d7f4393024d7d5111890f74679e1029ee0e97b1b6c12a708296 0013-libgcc_s.patch
|
||||
16fa64460806a6456c8185cf703e7afdf87f55cf49256ed06fd1c098d97d69a3d1df715bb409984ebd275009495ac9ee01bc090580558d2ff569fa2dbbff5fa6 0014-nopie.patch
|
||||
e054c819446d58e119570cca88a23f541c215c8e4a6eb65d194b97610046593981aaa306d74d39ad6868cb2a85da510dedefd0b729804e3b88a518e4a0897d20 0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch
|
||||
1b70eae1dfb7b819555c51c51d88b9acd09f44d491bf09b265bed7027721c3a74628715fd1bbc537ba43071e98e6747e08ad117b78fedda19571d7a8f6e2c9db 0016-dlang-update-zlib-binding.patch
|
||||
9f4cf47a2f4016cb6808f245159d9365134963765af41654d60c2f62d4622405f1d1041c3690d50a2db9501075ccc932efd32c739bb0d241af5b80829cb8bafe 0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch
|
||||
55ca9cc19376ac4ce333abdee700e185811455419da80b0f6d765d079aa1344073d09883add920530ad62a3b9c01c347f634931f3735cb021b81b8fd7229467c 0018-ada-fix-shared-linking.patch
|
||||
b461122d5bc5778398c72bc02bef6ee344ba6c79b7ff9945f9d252559ad445b298e154d7c4784e22fc5cf9d299fc3a8cfc3c0e4d37f12b961148e0432ac4e434 0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch
|
||||
61fdf02497bc5d90bdc1c9b2aa0294bbe1ab4285940dc840d94bda00b0c4dec342df639b11721e5569a6de47e53099928f1f1fb07ddcf3466535e8092b2af9a7 0020-libstdc-futex-add-time64-compatibility.patch
|
||||
b40fb4f96693a7a0cec086c24f17ba5c8c416e67d76d468306b26895033ee326454a2b2d3028077b9f2187c545bff8c99e87d44298c179ccbc1f48f04ccc0889 0021-add-fortify-headers-paths.patch
|
||||
7a7414d44a43260d7098bf24dacea6595fdaf42496ef1d176bb7a254da813c1faaf1ecfa6e1463af34c466f02cf2f8489dbfeae9bbfb070726d27da0330e4c59 0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch
|
||||
7bd3b297a05df00a0c961c407d84c60b7dcf5150919a6ce8e6d5162bb82e5820ae938feec24dad62dca141b4ede302345b6e08e21f06dd9393bec7592a8aecf7 0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch
|
||||
5c61dac5100dce45ad17f45e5e63e3f1e46173639384d7fb3c343e0b6a1e4c0ab39491d397c4445be63cf182f3bb79f7995cc8f89f70a61321dea24bf29cdd18 0024-Pure-64-bit-MIPS.patch
|
||||
be8eee9edfe4e768ea4873b618a3431ae4502e933af343f80b623e38626c0e9187b73debd6773ae8dfbfb514ff0e4a18a5102e5fac4545e5de18f8e226e6b237 0025-use-pure-64-bit-configuration-where-appropriate.patch
|
||||
2a2c89b3dfac37344bc17fbb9471b903cbdf4332c71bb20942587acccf962a42d58d2535cc0d90a0f6cddc8f6db1328c6b9f158aecbff99a92f9fa0e0683c0a7 0026-always-build-libgcc_eh.a.patch
|
||||
739e9d58875c291af82ca9d7509f52679a01704beb4f003e3ace1cd1ae2aede5763243e34c2c73be13bd1dd46539f50d3b7c7a293686b0c6158d3069d377009e 0027-ada-libgnarl-compatibility-for-musl.patch
|
||||
69f330f91a3354753e9283e804f18257c3e7a51f368defe4a704d20c2a00fd6d6cb62f4d7931ca886dd7dffeaf59fa9beaf36c19ebd3d25cdebfefc884d64c02 0028-ada-musl-support-fixes.patch"
|
||||
ee2d344e912ebaddf71d53ff674ca7ea7837ee65f982a8f088339fd05261e441aace6087f7f936d32b502bff7e375094f48cb90562ab7734c57e1750d3fe2029 0001-posix_memalign.patch
|
||||
deaf3ba25614df18b2b9b04244bcc9278c16d98f6fdeac17f7e2c0567be7c2836ab6d21fc9d8f779c672022d25fc278327d6d0d637bc200fadbb8d913ef95581 0002-gcc-poison-system-directories.patch
|
||||
eb80ea94e008e33b97c8c0d47e74d639897a13357abbd130e9bff4ae30349b8f788acbaf4caa61f23022a86841c431b8bb639c536aab548dc735470a7c7ccfcf 0003-Turn-on-Wl-z-relro-z-now-by-default.patch
|
||||
6cbc39dd24f7b4316b6e69940bf7c9f3ae889e8156f9c7dd72c8335e55a2a44d6fade37954296451b588bf8fc065514d4916ad527042b8f9a86d6e0d706e3c9c 0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch
|
||||
e8c75aef864e5852fc78bfd7949232fc58b40a743d7c04a122ee6e021ee99f72edcff6efbf74e0eedc9405faf81d01208867b0571c4dc8cb44b9a03d1d25fbde 0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch
|
||||
d5b3d40e1c4828d16684137487f64bf0b4b892fabc403f975f37d481a22647f923a3524a12714898937abdfbf875411e50b522134535f8d1852f103310aef5a3 0006-Enable-Wformat-and-Wformat-security-by-default.patch
|
||||
e568a17fb3348964c0d21e7d67ffeae4f2f0dfd3f2986aaf9cec86c685c13f0c830dfc019b6bd7fe58b8635e5b8fca7ad992a92210f2be285b8cac6467c33a78 0007-Enable-Wtrampolines-by-default.patch
|
||||
fd47150c72138d47a9faafe8586e84456e09a4ca0ed1ba9be7b5b2a351b1ca2d17b238beaa42c88888402d181933ff68cef0a91f0c3bd26d374706cf71726bbd 0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch
|
||||
820be83d93ff5b8d8fc69cdeccec0c6ac2544ee6cce43ae35e6829222791733a1c0b2232fb5a7ad93ab9e6cd677f077d01a4f9dec7aa9c38b013f74aa6c74fc3 0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch
|
||||
5be4c0ad27e3b86c06dcaefe34ee1271cb53ded3de9802bc1a8571497240ca870e22534f77adb52dc4556eb4861b94a6c9a39cf6a2e84ef62ee88a04a4a01868 0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch
|
||||
5024309e549b7e4a94f2af8bd727144bd27cf8b7cdcbb537a30f3dac28543697c214438da7af491e43cb90daac46344b7b0466729d5c4209ca8a3a0d5a7d027c 0011-libiberty-copy-PIC-objects-during-build-process.patch
|
||||
c0ebc205f6598edbe6d68b8a287c36ef80826b864e5b92b37f64e7a21ab7048cae67dd5650cd3d1399beb890753ad96e898a94c52d13b3ca7b266a15fed043ca 0012-libitm-disable-FORTIFY.patch
|
||||
4a4fae02231f49142ab90d4f3dcd093c13032781ff1659f6aca62da13f8c676e2ec9dcdd2e7959ec62835e13c515be9bd7a2e35d3c06768d44d9e1185cb40dac 0013-libgcc_s.patch
|
||||
9c513a30146364ecd899ca26a27019ea1ba353e8e409e0becb50d2a051022b701586b9276a4f118dbdd131c4882a04cad4188219bb10aa36d7b0bbe2eb2ceb03 0014-nopie.patch
|
||||
aec141251c3abae35b4dc3ecd3778e332fa5596282fea1fd08c8d5350d8a8740568910236ce8d38c5662232fa5412313cb0a1c7a46c79a5b5e2c643871bf643b 0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch
|
||||
d3fc4ea6918b4c4ce57eb45437f88ec3982bd5c8e17d282003e195dc705e0c84996ec140151b2b2371917595d2d62f30a2cb4676150c1bc8b8fd3b8fb85ecbe9 0016-dlang-update-zlib-binding.patch
|
||||
4ebf845f41c7a8ba5bfa624c8e1527eb0f15a48d6a8bd151435037bd4b9d71f955ac9b60ab453c0315d592e92f194be92b9c3fca40ed533d64c0a1995c3ad4be 0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch
|
||||
2ca085382a03d269a2f48ec49601328cec7c53eb69856ee55aea11610293c206e8881043030d2295f49a08a5897c9eb9a6126a5ae65edbd967e17e34dadfb2d8 0018-ada-fix-shared-linking.patch
|
||||
307a1ac2a6cea20c900b7bef2d5d7ad98c2b8cc45bdb2a6adbf151f3228d5de2670c75ddf48e4d3c9ceb7ed42852e24be534773551bc050ad10005faaee2600c 0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch
|
||||
d01d0031d97fa42363bd3fb0c0dda9b26e7f06660294f0ceec55624f6564f2ce372b9a255683c67d79dfa18fb8551416c04766debc2e1b9c587ef381eef64f0b 0020-libstdc-futex-add-time64-compatibility.patch
|
||||
e9eb5ff439cff4a22abaa7b9e27a176b51e1e1f4361fd829bd26e4b5ffc0e4583b1d6728b1510991b069b42f0aae8a2e698f85edecb1d792e4c7e10079507de8 0021-add-fortify-headers-paths.patch
|
||||
beb7aa26a3731855be2521495186af52d4764973f2bc1ad44554332e867fe52fa37bcb5747395e44ae0011413e702054a60a754ad81dd88bbf97e3c7c718f356 0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch
|
||||
ac3288b7840e5cf2500608773f40e604798b30fcb885c9fec7ba0bcc4bcfd374211faa26e82fcf4669bf624d5ccb0bdc747897759be77af3621b8b3bb08bff85 0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch
|
||||
7e953227e0d3f1105a754f3fdefbaaca0b106d337c5bcc9b6394712d7f47173f96906517030b508d5a57611cc637848f2e59aec92313b39f1e2221bd98729826 0024-Pure-64-bit-MIPS.patch
|
||||
12eaad6a8781e76f38bc4ba5c8cd09cfe0a0b95c0cde83fe58dc10bdec542fe43389f2c84bd313629c45af8ed3ffd46cc4478f5a4152ea1eb8d4b8276ede499c 0025-use-pure-64-bit-configuration-where-appropriate.patch
|
||||
73a649ac371f4a5da68c5f0b88010080efd7deaee29765ef7a299fd1654b5ccdbfee88c59e5d37ae55e37cf6fa218d989e411c04b17e0fd94268ed65d7dcd4bf 0026-always-build-libgcc_eh.a.patch
|
||||
59d9e0a5f39ad68b8bb1365f7c97a54ca4751cdad01ead8184fd897d8a13156145976a8b5b9856be154c053d6ba11eaad1e5662e7ddda9ba6d2811340df61cba 0027-ada-libgnarl-compatibility-for-musl.patch
|
||||
8207323c530929517c799b24b1a7ba39c07bbb0e6770f878f1d66088ae16667e7706c9402ac04fe5eb6447a6ad12b548cc7e7612c5b217cd24e7d00094d2a28f 0028-ada-musl-support-fixes.patch
|
||||
b90f7ad074b6183a4afc6be65349b8bf94b78d1c259d5be9877c16e3de95222fb6905cba7eb6ee4fe1e564ed20bf183c6815bd087896b6b0376656a841736fc1 0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch
|
||||
39a66708fb7ab4a72e1973749e32c22484e8e6c0afde6a59a645f2536c71cea86c8de2f0448621d53888293121344e84a24617400fae849282df57e0f5ddc21d 0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 399f9e74a691ca6272d460d72d1b47afcad84752 Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Fri, 26 Jan 2018 20:32:50 +0000
|
||||
Subject: [PATCH 01/28] posix_memalign
|
||||
Subject: [PATCH 01/30] posix_memalign
|
||||
|
||||
---
|
||||
gcc/config/i386/pmm_malloc.h | 9 +++++----
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 0e993b1b9a33910193862d76facf34bdbe58ed01 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:59:00 +0400
|
||||
Subject: [PATCH 02/28] gcc: poison-system-directories
|
||||
Subject: [PATCH 02/30] gcc: poison-system-directories
|
||||
|
||||
Add /sw/include and /opt/include based on the original
|
||||
zecke-no-host-includes.patch patch. The original patch checked for
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From a35a55940c3402f8ebb510ec7d8bc67e85051277 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:45:49 +0000
|
||||
Subject: [PATCH 03/28] Turn on -Wl,-z,relro,-z,now by default.
|
||||
Subject: [PATCH 03/30] Turn on -Wl,-z,relro,-z,now by default.
|
||||
|
||||
---
|
||||
gcc/doc/invoke.texi | 3 +++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From d2865d0a184ef59be8893dd34edf5037c4bf48f7 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:46:22 +0000
|
||||
Subject: [PATCH 04/28] Turn on -D_FORTIFY_SOURCE=2 by default for C, C++,
|
||||
Subject: [PATCH 04/30] Turn on -D_FORTIFY_SOURCE=2 by default for C, C++,
|
||||
ObjC, ObjC++, if the optimization level is > 0
|
||||
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 872e0a15a2b74cd6b6ba58e2e7e1605543ea36bd Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:46:56 +0000
|
||||
Subject: [PATCH 05/28] On linux targets pass --as-needed by default to the
|
||||
Subject: [PATCH 05/30] On linux targets pass --as-needed by default to the
|
||||
linker, but always link the sanitizer libraries with --no-as-needed.
|
||||
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 5e20872b8cc916cb457c63c6cd970c4fcba47bbb Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:47:43 +0000
|
||||
Subject: [PATCH 06/28] Enable -Wformat and -Wformat-security by default.
|
||||
Subject: [PATCH 06/30] Enable -Wformat and -Wformat-security by default.
|
||||
|
||||
---
|
||||
gcc/c-family/c.opt | 4 ++--
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 1bcf7e30226852db956becebaffdfe2738923423 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:48:24 +0000
|
||||
Subject: [PATCH 07/28] Enable -Wtrampolines by default.
|
||||
Subject: [PATCH 07/30] Enable -Wtrampolines by default.
|
||||
|
||||
---
|
||||
gcc/common.opt | 2 +-
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 23fd86ff34670873dd294bd87b93f45c3624903a Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:49:40 +0000
|
||||
Subject: [PATCH 08/28] Disable ssp on -nostdlib, -nodefaultlibs and
|
||||
Subject: [PATCH 08/30] Disable ssp on -nostdlib, -nodefaultlibs and
|
||||
-ffreestanding Change the buffer size.
|
||||
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From d27d7936ecd9f357a3c6ee05e6548f8a68fdd4b7 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:50:33 +0000
|
||||
Subject: [PATCH 09/28] Ensure that msgfmt doesn't encounter problems during
|
||||
Subject: [PATCH 09/30] Ensure that msgfmt doesn't encounter problems during
|
||||
gcc bootstrapping.
|
||||
|
||||
Solves error messages like the following:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 2ec258d6d31e2c0c614c5086acee84a87768a67c Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:52:07 +0000
|
||||
Subject: [PATCH 10/28] Don't declare asprintf if defined as a macro.
|
||||
Subject: [PATCH 10/30] Don't declare asprintf if defined as a macro.
|
||||
|
||||
---
|
||||
include/libiberty.h | 3 +++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 4f6fd2272f57620da399d0f841fce12b9db3b2d1 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:53:00 +0000
|
||||
Subject: [PATCH 11/28] libiberty: copy PIC objects during build process
|
||||
Subject: [PATCH 11/30] libiberty: copy PIC objects during build process
|
||||
|
||||
---
|
||||
libiberty/Makefile.in | 1 +
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From cef5e0336cfdf4afd0e01fa9e562f686b234697a Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:53:36 +0000
|
||||
Subject: [PATCH 12/28] libitm: disable FORTIFY
|
||||
Subject: [PATCH 12/30] libitm: disable FORTIFY
|
||||
|
||||
---
|
||||
libitm/configure.tgt | 10 ++++++++++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From d31721459e363e49dfe0a7797300864d9cef92f0 Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Sat, 24 Oct 2015 20:09:53 +0000
|
||||
Subject: [PATCH 13/28] libgcc_s
|
||||
Subject: [PATCH 13/30] libgcc_s
|
||||
|
||||
---
|
||||
gcc/config/i386/i386-expand.c | 4 ++--
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From f64f853eae3b390adbbc9b74a336d93918e6dca4 Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Sat, 7 Nov 2015 02:08:05 +0000
|
||||
Subject: [PATCH 14/28] nopie
|
||||
Subject: [PATCH 14/30] nopie
|
||||
|
||||
---
|
||||
gcc/configure | 27 +++++++++++++++++++++++++++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 37dace030c1402a8e6734a0fc59e18717ce1a2ef Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:57:09 +0000
|
||||
Subject: [PATCH 15/28] libffi: use __linux__ instead of __gnu_linux__ for musl
|
||||
Subject: [PATCH 15/30] libffi: use __linux__ instead of __gnu_linux__ for musl
|
||||
|
||||
---
|
||||
libffi/src/closures.c | 2 +-
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 7fc386a2e629e859968da4eb4d0ff4983cb3b76f Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:57:51 +0000
|
||||
Subject: [PATCH 16/28] dlang: update zlib binding
|
||||
Subject: [PATCH 16/30] dlang: update zlib binding
|
||||
|
||||
---
|
||||
libphobos/src/std/zlib.d | 266 ++++++++++++++++++++++++++++-----------
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From ef5f7880cff27a2b92952ce53a207d5dd896923b Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:58:22 +0000
|
||||
Subject: [PATCH 17/28] dlang: fix fcntl on mips, add libucontext dep
|
||||
Subject: [PATCH 17/30] dlang: fix fcntl on mips, add libucontext dep
|
||||
|
||||
---
|
||||
libphobos/configure.tgt | 1 +
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From b675e0383262d6d702f5b732e4459d3e2c2a4891 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:59:16 +0000
|
||||
Subject: [PATCH 18/28] ada: fix shared linking
|
||||
Subject: [PATCH 18/30] ada: fix shared linking
|
||||
|
||||
---
|
||||
gcc/ada/link.c | 12 ++++++------
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 0ea91dd6f8d856d5b589c2a3e95469fea06e7094 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:59:43 +0000
|
||||
Subject: [PATCH 19/28] build: fix CXXFLAGS_FOR_BUILD passing
|
||||
Subject: [PATCH 19/30] build: fix CXXFLAGS_FOR_BUILD passing
|
||||
|
||||
---
|
||||
Makefile.in | 1 +
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 9684a815e1cbe854383c3c511e1d84d43c46ec94 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:00:17 +0000
|
||||
Subject: [PATCH 20/28] libstdc++: futex: add time64 compatibility
|
||||
Subject: [PATCH 20/30] libstdc++: futex: add time64 compatibility
|
||||
|
||||
---
|
||||
libstdc++-v3/src/c++11/futex.cc | 8 ++++++++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From a0708ec975c01b049d254dc51179898966bf8a52 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:01:06 +0000
|
||||
Subject: [PATCH 21/28] add fortify-headers paths
|
||||
Subject: [PATCH 21/30] add fortify-headers paths
|
||||
|
||||
---
|
||||
gcc/config/linux.h | 2 ++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 740342a0e4b0b3af498964440918abba1a27ba33 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
|
||||
Date: Fri, 21 Aug 2020 07:03:00 +0000
|
||||
Subject: [PATCH 22/28] Alpine musl package provides libssp_nonshared.a. We
|
||||
Subject: [PATCH 22/30] Alpine musl package provides libssp_nonshared.a. We
|
||||
link to it unconditionally, as otherwise we get link failures if some objects
|
||||
are -fstack-protector built and final link happens with -fno-stack-protector.
|
||||
This seems to be the common case when bootstrapping gcc, the piepatches do
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 775adf35d6f34f61947fc28a2bdbfa7e881c40d5 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:03:42 +0000
|
||||
Subject: [PATCH 23/28] DP: Use --push-state/--pop-state for gold as well when
|
||||
Subject: [PATCH 23/30] DP: Use --push-state/--pop-state for gold as well when
|
||||
linking libtsan.
|
||||
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 717090cf538f765db1730956c512a43f2d52a802 Mon Sep 17 00:00:00 2001
|
||||
From: Nils Andreas Svee <me@lochnair.net>
|
||||
Date: Thu, 21 Dec 2017 03:14:33 +0100
|
||||
Subject: [PATCH 24/28] Pure 64-bit MIPS
|
||||
Subject: [PATCH 24/30] Pure 64-bit MIPS
|
||||
|
||||
---
|
||||
gcc/config/mips/mips.h | 8 ++++----
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From f73cf8d2f8f4eee71fc2ba850672e69f509a4486 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:04:40 +0000
|
||||
Subject: [PATCH 25/28] use pure 64-bit configuration where appropriate
|
||||
Subject: [PATCH 25/30] use pure 64-bit configuration where appropriate
|
||||
|
||||
---
|
||||
gcc/config/aarch64/t-aarch64-linux | 2 +-
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 8472f6d0037dcd19c44b1e95d95fbf937b3823e6 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:05:41 +0000
|
||||
Subject: [PATCH 26/28] always build libgcc_eh.a
|
||||
Subject: [PATCH 26/30] always build libgcc_eh.a
|
||||
|
||||
highly inspired by:
|
||||
http://landley.net/hg/aboriginal/file/7e0747a665ab/sources/patches/gcc-core-libgcceh.patch
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 4e1b3a26f558e7693853d3600ee677705e67406c Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:06:30 +0000
|
||||
Subject: [PATCH 27/28] ada: libgnarl compatibility for musl
|
||||
Subject: [PATCH 27/30] ada: libgnarl compatibility for musl
|
||||
|
||||
---
|
||||
gcc/ada/libgnarl/s-osinte__linux.ads | 11 ------
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 5e3d7d2f1e2448b6c5eb207f9251c437629e43bc Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:07:48 +0000
|
||||
Subject: [PATCH 28/28] ada: musl support fixes
|
||||
Subject: [PATCH 28/30] ada: musl support fixes
|
||||
|
||||
---
|
||||
gcc/ada/Makefile.rtl | 10 +++++-----
|
||||
|
|
|
@ -0,0 +1,520 @@
|
|||
From d6599f89ba558ec2a68d4bc4af15cf3513218054 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Sandiford <richard.sandiford@arm.com>
|
||||
Date: Mon, 3 Aug 2020 09:48:36 +0100
|
||||
Subject: [PATCH 29/30] c: Fix bogus vector initialisation error [PR96377]
|
||||
|
||||
One of the problems in this PR was that if we had:
|
||||
|
||||
vector_type1 array[] = { vector_value1 };
|
||||
|
||||
process_init_element would only treat vector_value1 as initialising
|
||||
a vector_type1 if they had the same TYPE_MAIN_VARIANT. This has
|
||||
several problems:
|
||||
|
||||
(1) It gives confusing error messages if the vector types are
|
||||
incompatible. (Tested by gcc.dg/pr96377-1.c.)
|
||||
|
||||
(2) It means that we reject code that should be valid with
|
||||
-flax-vector-conversions. (Tested by gcc.dg/pr96377-2.c.)
|
||||
|
||||
(3) On arm and aarch64 targets, it means that we reject some
|
||||
initializers that mix Advanced SIMD and standard GNU vectors.
|
||||
These vectors have traditionally had different TYPE_MAIN_VARIANTs
|
||||
because they have different mangling schemes. (Tested by
|
||||
gcc.dg/pr96377-[3-6].c.)
|
||||
|
||||
(4) It means that we reject SVE initializers that should be valid.
|
||||
(Tested by gcc.target/aarch64/sve/gnu_vectors_[34].c.)
|
||||
|
||||
(5) After r11-1741-g:31427b974ed7b7dd54e2 we reject:
|
||||
|
||||
arm_neon_type1 array[] = { k ^ arm_neon_value1 };
|
||||
|
||||
because applying the binary operator to arm_neon_value1 strips
|
||||
the "Advanced SIMD type" attributes that were added in that patch.
|
||||
Stripping the attributes is problematic for other reasons though,
|
||||
so that still needs to be fixed separately.
|
||||
|
||||
g++.target/aarch64/sve/gnu_vectors_[34].C already pass.
|
||||
|
||||
gcc/c/
|
||||
PR c/96377
|
||||
* c-typeck.c (process_init_element): Split test for whether to
|
||||
recurse into a record, union or array into...
|
||||
(initialize_elementwise_p): ...this new function. Don't recurse
|
||||
into a vector type if the initialization value is also a vector.
|
||||
|
||||
gcc/testsuite/
|
||||
PR c/96377
|
||||
* gcc.dg/pr96377-1.c: New test.
|
||||
* gcc.dg/pr96377-2.c: Likewise.
|
||||
* gcc.dg/pr96377-3.c: Likewise.
|
||||
* gcc.dg/pr96377-4.c: Likewise.
|
||||
* gcc.dg/pr96377-5.c: Likewise.
|
||||
* gcc.dg/pr96377-6.c: Likewise.
|
||||
* gcc.target/aarch64/pr96377-1.c: Likewise.
|
||||
* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c: Likewise.
|
||||
* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c: Likewise.
|
||||
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C: Likewise.
|
||||
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C: Likewise.
|
||||
|
||||
(cherry picked from commit 7d599ad27b9bcf5165f87710f1abc64bbabd06ae)
|
||||
---
|
||||
gcc/c/c-typeck.c | 59 ++++++++++++++-----
|
||||
.../sve/acle/general-c++/gnu_vectors_3.C | 15 +++++
|
||||
.../sve/acle/general-c++/gnu_vectors_4.C | 15 +++++
|
||||
gcc/testsuite/gcc.dg/pr96377-1.c | 32 ++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-2.c | 31 ++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-3.c | 33 +++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-4.c | 32 ++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-5.c | 33 +++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-6.c | 32 ++++++++++
|
||||
gcc/testsuite/gcc.target/aarch64/pr96377-1.c | 20 +++++++
|
||||
.../sve/acle/general-c/gnu_vectors_3.c | 15 +++++
|
||||
.../sve/acle/general-c/gnu_vectors_4.c | 15 +++++
|
||||
12 files changed, 317 insertions(+), 15 deletions(-)
|
||||
create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
|
||||
create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-1.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-2.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-3.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-4.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-5.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-6.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/aarch64/pr96377-1.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
|
||||
|
||||
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
|
||||
index eb4b641e6bb..58762f10a93 100644
|
||||
--- a/gcc/c/c-typeck.c
|
||||
+++ b/gcc/c/c-typeck.c
|
||||
@@ -9910,6 +9910,47 @@ output_pending_init_elements (int all, struct obstack * braced_init_obstack)
|
||||
goto retry;
|
||||
}
|
||||
|
||||
+/* Expression VALUE coincides with the start of type TYPE in a braced
|
||||
+ initializer. Return true if we should treat VALUE as initializing
|
||||
+ the first element of TYPE, false if we should treat it as initializing
|
||||
+ TYPE as a whole.
|
||||
+
|
||||
+ If the initializer is clearly invalid, the question becomes:
|
||||
+ which choice gives the best error message? */
|
||||
+
|
||||
+static bool
|
||||
+initialize_elementwise_p (tree type, tree value)
|
||||
+{
|
||||
+ if (type == error_mark_node || value == error_mark_node)
|
||||
+ return false;
|
||||
+
|
||||
+ gcc_checking_assert (TYPE_MAIN_VARIANT (type) == type);
|
||||
+
|
||||
+ tree value_type = TREE_TYPE (value);
|
||||
+ if (value_type == error_mark_node)
|
||||
+ return false;
|
||||
+
|
||||
+ /* GNU vectors can be initialized elementwise. However, treat any
|
||||
+ kind of vector value as initializing the vector type as a whole,
|
||||
+ regardless of whether the value is a GNU vector. Such initializers
|
||||
+ are valid if and only if they would have been valid in a non-braced
|
||||
+ initializer like:
|
||||
+
|
||||
+ TYPE foo = VALUE;
|
||||
+
|
||||
+ so recursing into the vector type would be at best confusing or at
|
||||
+ worst wrong. For example, when -flax-vector-conversions is in effect,
|
||||
+ it's possible to initialize a V8HI from a V4SI, even though the vectors
|
||||
+ have different element types and different numbers of elements. */
|
||||
+ if (gnu_vector_type_p (type))
|
||||
+ return !VECTOR_TYPE_P (value_type);
|
||||
+
|
||||
+ if (AGGREGATE_TYPE_P (type))
|
||||
+ return type != TYPE_MAIN_VARIANT (value_type);
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
/* Add one non-braced element to the current constructor level.
|
||||
This adjusts the current position within the constructor's type.
|
||||
This may also start or terminate implicit levels
|
||||
@@ -10089,11 +10130,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
|
||||
/* Otherwise, if we have come to a subaggregate,
|
||||
and we don't have an element of its type, push into it. */
|
||||
else if (value.value != NULL_TREE
|
||||
- && value.value != error_mark_node
|
||||
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
|
||||
- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
|
||||
- || fieldcode == UNION_TYPE
|
||||
- || gnu_vector_type_p (fieldtype)))
|
||||
+ && initialize_elementwise_p (fieldtype, value.value))
|
||||
{
|
||||
push_init_level (loc, 1, braced_init_obstack);
|
||||
continue;
|
||||
@@ -10181,11 +10218,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
|
||||
/* Otherwise, if we have come to a subaggregate,
|
||||
and we don't have an element of its type, push into it. */
|
||||
else if (value.value != NULL_TREE
|
||||
- && value.value != error_mark_node
|
||||
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
|
||||
- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
|
||||
- || fieldcode == UNION_TYPE
|
||||
- || gnu_vector_type_p (fieldtype)))
|
||||
+ && initialize_elementwise_p (fieldtype, value.value))
|
||||
{
|
||||
push_init_level (loc, 1, braced_init_obstack);
|
||||
continue;
|
||||
@@ -10224,11 +10257,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
|
||||
/* Otherwise, if we have come to a subaggregate,
|
||||
and we don't have an element of its type, push into it. */
|
||||
else if (value.value != NULL_TREE
|
||||
- && value.value != error_mark_node
|
||||
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != elttype
|
||||
- && (eltcode == RECORD_TYPE || eltcode == ARRAY_TYPE
|
||||
- || eltcode == UNION_TYPE
|
||||
- || gnu_vector_type_p (elttype)))
|
||||
+ && initialize_elementwise_p (elttype, value.value))
|
||||
{
|
||||
push_init_level (loc, 1, braced_init_obstack);
|
||||
continue;
|
||||
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
|
||||
new file mode 100644
|
||||
index 00000000000..e607d58d726
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* { dg-options "-msve-vector-bits=256" } */
|
||||
+
|
||||
+#include <arm_sve.h>
|
||||
+
|
||||
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
|
||||
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
|
||||
+
|
||||
+void
|
||||
+f (svuint8_t sve_u1, svint8_t sve_s1,
|
||||
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
|
||||
+{
|
||||
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
|
||||
+ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "cannot convert" }
|
||||
+ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "cannot convert" }
|
||||
+}
|
||||
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
|
||||
new file mode 100644
|
||||
index 00000000000..ac4e0d12ff8
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
|
||||
+
|
||||
+#include <arm_sve.h>
|
||||
+
|
||||
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
|
||||
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
|
||||
+
|
||||
+void
|
||||
+f (svuint8_t sve_u1, svint8_t sve_s1,
|
||||
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
|
||||
+{
|
||||
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
|
||||
+ gnu_uint8_t arr2[] = { gnu_s1 };
|
||||
+ gnu_uint8_t arr3[] = { sve_s1 };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-1.c b/gcc/testsuite/gcc.dg/pr96377-1.c
|
||||
new file mode 100644
|
||||
index 00000000000..2bf3f816331
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-1.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* { dg-options "-fno-lax-vector-conversions" } */
|
||||
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { v8hi x; v4si y; };
|
||||
+union u1 { v8hi x; v4si y; };
|
||||
+union u2 { v4si s; v8hi y; };
|
||||
+
|
||||
+void
|
||||
+foo (v4si i, v8hi h)
|
||||
+{
|
||||
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
|
||||
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-2.c b/gcc/testsuite/gcc.dg/pr96377-2.c
|
||||
new file mode 100644
|
||||
index 00000000000..f58b06d9076
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-2.c
|
||||
@@ -0,0 +1,31 @@
|
||||
+/* { dg-options "-flax-vector-conversions" } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { v8hi x; v4si y; };
|
||||
+union u1 { v8hi x; v4si y; };
|
||||
+union u2 { v4si s; v8hi y; };
|
||||
+
|
||||
+void
|
||||
+foo (v4si i, v8hi h)
|
||||
+{
|
||||
+ struct s x1 = { i, i };
|
||||
+ struct s x2 = { h, h };
|
||||
+ struct s x3 = { i, h };
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i };
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h };
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h };
|
||||
+ v4si z3[] = { h, i };
|
||||
+ v4si z4[] = { h, h };
|
||||
+ v8hi z5[] = { i, i };
|
||||
+ v8hi z6[] = { i, h };
|
||||
+ v8hi z7[] = { h, i };
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-3.c b/gcc/testsuite/gcc.dg/pr96377-3.c
|
||||
new file mode 100644
|
||||
index 00000000000..66dce01f277
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-3.c
|
||||
@@ -0,0 +1,33 @@
|
||||
+/* { dg-do compile { target aarch64*-*-* } } */
|
||||
+/* { dg-options "-fno-lax-vector-conversions" } */
|
||||
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { v8hi x; v4si y; };
|
||||
+union u1 { v8hi x; v4si y; };
|
||||
+union u2 { v4si s; v8hi y; };
|
||||
+
|
||||
+void
|
||||
+foo (__Int32x4_t i, __Int16x8_t h)
|
||||
+{
|
||||
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
|
||||
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-4.c b/gcc/testsuite/gcc.dg/pr96377-4.c
|
||||
new file mode 100644
|
||||
index 00000000000..f7aaf490031
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-4.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* { dg-do compile { target aarch64*-*-* } } */
|
||||
+/* { dg-options "-flax-vector-conversions" } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { v8hi x; v4si y; };
|
||||
+union u1 { v8hi x; v4si y; };
|
||||
+union u2 { v4si s; v8hi y; };
|
||||
+
|
||||
+void
|
||||
+foo (__Int32x4_t i, __Int16x8_t h)
|
||||
+{
|
||||
+ struct s x1 = { i, i };
|
||||
+ struct s x2 = { h, h };
|
||||
+ struct s x3 = { i, h };
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i };
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h };
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h };
|
||||
+ v4si z3[] = { h, i };
|
||||
+ v4si z4[] = { h, h };
|
||||
+ v8hi z5[] = { i, i };
|
||||
+ v8hi z6[] = { i, h };
|
||||
+ v8hi z7[] = { h, i };
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-5.c b/gcc/testsuite/gcc.dg/pr96377-5.c
|
||||
new file mode 100644
|
||||
index 00000000000..3d0c24befa6
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-5.c
|
||||
@@ -0,0 +1,33 @@
|
||||
+/* { dg-do compile { target aarch64*-*-* } } */
|
||||
+/* { dg-options "-fno-lax-vector-conversions" } */
|
||||
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { __Int16x8_t x; __Int32x4_t y; };
|
||||
+union u1 { __Int16x8_t x; __Int32x4_t y; };
|
||||
+union u2 { __Int32x4_t s; __Int16x8_t y; };
|
||||
+
|
||||
+void
|
||||
+foo (v4si i, v8hi h)
|
||||
+{
|
||||
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__Int16x8_t" }
|
||||
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-6.c b/gcc/testsuite/gcc.dg/pr96377-6.c
|
||||
new file mode 100644
|
||||
index 00000000000..165327fa292
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-6.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* { dg-do compile { target aarch64*-*-* } } */
|
||||
+/* { dg-options "-flax-vector-conversions" } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { __Int16x8_t x; __Int32x4_t y; };
|
||||
+union u1 { __Int16x8_t x; __Int32x4_t y; };
|
||||
+union u2 { __Int32x4_t s; __Int16x8_t y; };
|
||||
+
|
||||
+void
|
||||
+foo (v4si i, v8hi h)
|
||||
+{
|
||||
+ struct s x1 = { i, i };
|
||||
+ struct s x2 = { h, h };
|
||||
+ struct s x3 = { i, h };
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i };
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h };
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h };
|
||||
+ v4si z3[] = { h, i };
|
||||
+ v4si z4[] = { h, h };
|
||||
+ v8hi z5[] = { i, i };
|
||||
+ v8hi z6[] = { i, h };
|
||||
+ v8hi z7[] = { h, i };
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.target/aarch64/pr96377-1.c b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
|
||||
new file mode 100644
|
||||
index 00000000000..51e3e36edfc
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
|
||||
@@ -0,0 +1,20 @@
|
||||
+/* { dg-options "" } */
|
||||
+
|
||||
+#include <arm_neon.h>
|
||||
+
|
||||
+struct aegis128_state {
|
||||
+ uint8x16_t v[5];
|
||||
+};
|
||||
+
|
||||
+void foo(const void *key, const void *iv, const void *const0, const void *const1)
|
||||
+{
|
||||
+ uint8x16_t k = vld1q_u8(key);
|
||||
+ uint8x16_t kiv = k ^ vld1q_u8(iv);
|
||||
+ struct aegis128_state st = {{
|
||||
+ kiv,
|
||||
+ vld1q_u8(const1),
|
||||
+ vld1q_u8(const0),
|
||||
+ k ^ vld1q_u8(const0),
|
||||
+ k ^ vld1q_u8(const1),
|
||||
+ }};
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
|
||||
new file mode 100644
|
||||
index 00000000000..0f1a2b0e46b
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* { dg-options "-msve-vector-bits=256" } */
|
||||
+
|
||||
+#include <arm_sve.h>
|
||||
+
|
||||
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
|
||||
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
|
||||
+
|
||||
+void
|
||||
+f (svuint8_t sve_u1, svint8_t sve_s1,
|
||||
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
|
||||
+{
|
||||
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
|
||||
+ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "incompatible types" }
|
||||
+ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "incompatible types" }
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
|
||||
new file mode 100644
|
||||
index 00000000000..ac4e0d12ff8
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
|
||||
+
|
||||
+#include <arm_sve.h>
|
||||
+
|
||||
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
|
||||
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
|
||||
+
|
||||
+void
|
||||
+f (svuint8_t sve_u1, svint8_t sve_s1,
|
||||
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
|
||||
+{
|
||||
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
|
||||
+ gnu_uint8_t arr2[] = { gnu_s1 };
|
||||
+ gnu_uint8_t arr3[] = { sve_s1 };
|
||||
+}
|
||||
--
|
||||
2.27.0
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
From 773021143288f5bf0dca1e3ee1f908f580f6fd9c Mon Sep 17 00:00:00 2001
|
||||
From: Peter Bergner <bergner@linux.ibm.com>
|
||||
Date: Thu, 13 Aug 2020 13:40:39 -0500
|
||||
Subject: [PATCH 30/30] rs6000: ICE when using an MMA type as a function param
|
||||
or return value [PR96506]
|
||||
|
||||
PR96506 shows a problem where we ICE on illegal usage, namely using MMA
|
||||
types for function arguments and return values. The solution is to flag
|
||||
these illegal usages as errors early, before we ICE.
|
||||
|
||||
2020-08-13 Peter Bergner <bergner@linux.ibm.com>
|
||||
|
||||
gcc/
|
||||
PR target/96506
|
||||
* config/rs6000/rs6000-call.c (rs6000_promote_function_mode): Disallow
|
||||
MMA types as return values.
|
||||
(rs6000_function_arg): Disallow MMA types as function arguments.
|
||||
|
||||
gcc/testsuite/
|
||||
PR target/96506
|
||||
* gcc.target/powerpc/pr96506.c: New test.
|
||||
|
||||
(cherry picked from commit 0ad7e730c142ef6cd0ddc1491a89a7f330caa887)
|
||||
---
|
||||
gcc/config/rs6000/rs6000-call.c | 34 ++++++++++-
|
||||
gcc/testsuite/gcc.target/powerpc/pr96506.c | 66 ++++++++++++++++++++++
|
||||
2 files changed, 99 insertions(+), 1 deletion(-)
|
||||
create mode 100644 gcc/testsuite/gcc.target/powerpc/pr96506.c
|
||||
|
||||
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
|
||||
index 243601e90c1..37566780e54 100644
|
||||
--- a/gcc/config/rs6000/rs6000-call.c
|
||||
+++ b/gcc/config/rs6000/rs6000-call.c
|
||||
@@ -6076,8 +6076,30 @@ machine_mode
|
||||
rs6000_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
|
||||
machine_mode mode,
|
||||
int *punsignedp ATTRIBUTE_UNUSED,
|
||||
- const_tree, int)
|
||||
+ const_tree, int for_return)
|
||||
{
|
||||
+ /* Warning: this is a static local variable and not always NULL!
|
||||
+ This function is called multiple times for the same function
|
||||
+ and return value. PREV_FUNC is used to keep track of the
|
||||
+ first time we encounter a function's return value in order
|
||||
+ to not report an error with that return value multiple times. */
|
||||
+ static struct function *prev_func = NULL;
|
||||
+
|
||||
+ /* We do not allow MMA types being used as return values. Only report
|
||||
+ the invalid return value usage the first time we encounter it. */
|
||||
+ if (for_return
|
||||
+ && prev_func != cfun
|
||||
+ && (mode == POImode || mode == PXImode))
|
||||
+ {
|
||||
+ /* Record we have now handled function CFUN, so the next time we
|
||||
+ are called, we do not re-report the same error. */
|
||||
+ prev_func = cfun;
|
||||
+ if (TYPE_CANONICAL (type) != NULL_TREE)
|
||||
+ type = TYPE_CANONICAL (type);
|
||||
+ error ("invalid use of MMA type %qs as a function return value",
|
||||
+ IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
|
||||
+ }
|
||||
+
|
||||
PROMOTE_MODE (mode, *punsignedp, type);
|
||||
|
||||
return mode;
|
||||
@@ -7028,6 +7050,16 @@ rs6000_function_arg (cumulative_args_t cum_v, const function_arg_info &arg)
|
||||
machine_mode elt_mode;
|
||||
int n_elts;
|
||||
|
||||
+ /* We do not allow MMA types being used as function arguments. */
|
||||
+ if (mode == POImode || mode == PXImode)
|
||||
+ {
|
||||
+ if (TYPE_CANONICAL (type) != NULL_TREE)
|
||||
+ type = TYPE_CANONICAL (type);
|
||||
+ error ("invalid use of MMA operand of type %qs as a function parameter",
|
||||
+ IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
|
||||
+ return NULL_RTX;
|
||||
+ }
|
||||
+
|
||||
/* Return a marker to indicate whether CR1 needs to set or clear the
|
||||
bit that V.4 uses to say fp args were passed in registers.
|
||||
Assume that we don't need the marker for software floating point,
|
||||
diff --git a/gcc/testsuite/gcc.target/powerpc/pr96506.c b/gcc/testsuite/gcc.target/powerpc/pr96506.c
|
||||
new file mode 100644
|
||||
index 00000000000..b1b40c5a5c8
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/powerpc/pr96506.c
|
||||
@@ -0,0 +1,66 @@
|
||||
+/* PR target/96506 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-require-effective-target power10_ok } */
|
||||
+/* { dg-options "-mdejagnu-cpu=power10 -O2" } */
|
||||
+
|
||||
+extern void bar0();
|
||||
+extern void bar1();
|
||||
+extern void bar2();
|
||||
+extern void bar3();
|
||||
+
|
||||
+typedef __vector_pair vpair_t;
|
||||
+typedef __vector_quad vquad_t;
|
||||
+
|
||||
+/* Verify we flag errors on the following. */
|
||||
+
|
||||
+void
|
||||
+foo0 (void)
|
||||
+{
|
||||
+ __vector_pair v;
|
||||
+ bar0 (v); /* { dg-error "invalid use of MMA operand of type .__vector_pair. as a function parameter" } */
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+foo1 (void)
|
||||
+{
|
||||
+ vpair_t v;
|
||||
+ bar1 (v); /* { dg-error "invalid use of MMA operand of type .__vector_pair. as a function parameter" } */
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+foo2 (void)
|
||||
+{
|
||||
+ __vector_quad v;
|
||||
+ bar2 (v); /* { dg-error "invalid use of MMA operand of type .__vector_quad. as a function parameter" } */
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+foo3 (void)
|
||||
+{
|
||||
+ vquad_t v;
|
||||
+ bar3 (v); /* { dg-error "invalid use of MMA operand of type .__vector_quad. as a function parameter" } */
|
||||
+}
|
||||
+
|
||||
+__vector_pair
|
||||
+foo4 (__vector_pair *src) /* { dg-error "invalid use of MMA type .__vector_pair. as a function return value" } */
|
||||
+{
|
||||
+ return *src;
|
||||
+}
|
||||
+
|
||||
+vpair_t
|
||||
+foo5 (vpair_t *src) /* { dg-error "invalid use of MMA type .__vector_pair. as a function return value" } */
|
||||
+{
|
||||
+ return *src;
|
||||
+}
|
||||
+
|
||||
+__vector_quad
|
||||
+foo6 (__vector_quad *src) /* { dg-error "invalid use of MMA type .__vector_quad. as a function return value" } */
|
||||
+{
|
||||
+ return *src;
|
||||
+}
|
||||
+
|
||||
+vquad_t
|
||||
+foo7 (vquad_t *src) /* { dg-error "invalid use of MMA type .__vector_quad. as a function return value" } */
|
||||
+{
|
||||
+ return *src;
|
||||
+}
|
||||
--
|
||||
2.27.0
|
||||
|
|
@ -30,7 +30,7 @@ pkgver=10.2.0
|
|||
[ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target=""
|
||||
|
||||
pkgname=gcc-armhf
|
||||
pkgrel=1
|
||||
pkgrel=2
|
||||
pkgdesc="Stage2 cross-compiler for armhf"
|
||||
url="https://gcc.gnu.org"
|
||||
arch="x86_64"
|
||||
|
@ -201,6 +201,8 @@ source="https://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$pkgver}/gcc-${_pkg
|
|||
0026-always-build-libgcc_eh.a.patch
|
||||
0027-ada-libgnarl-compatibility-for-musl.patch
|
||||
0028-ada-musl-support-fixes.patch
|
||||
0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch
|
||||
0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch
|
||||
"
|
||||
|
||||
# gcc-4.8-build-args.patch
|
||||
|
@ -631,31 +633,33 @@ gnat() {
|
|||
}
|
||||
|
||||
sha512sums="42ae38928bd2e8183af445da34220964eb690b675b1892bbeb7cd5bb62be499011ec9a93397dba5e2fb681afadfc6f2767d03b9035b44ba9be807187ae6dc65e gcc-10.2.0.tar.xz
|
||||
5edc2dfe8e5d680c8c622b16943a1ec4e7f7db245e2fa4e54371962c048af1f074b1ed49f619f8abdf0eb97129d8b7198b4f16f06da794fe0fd6ce4d55f829fb 0001-posix_memalign.patch
|
||||
bff1c9a08d32186b94660c42823babd63729b2a050e761c514c3f23c7eac2585ddc4f748df547915fb6b2fc098f3ecc2e8d9707f3aef9bb9c6103ba92ed5f906 0002-gcc-poison-system-directories.patch
|
||||
7662cc8c6cd77a6cacb2899f4fb13d14495feb508bad9ee8ae0dd38ecddf8d45391ec636022913eece41661fbd5d336ac2130a5c08b2495eb5aff5501cff49a6 0003-Turn-on-Wl-z-relro-z-now-by-default.patch
|
||||
26303e588f37c4208c3da962972b83759daa5abaf8eaf4da331a4cf1e3a90590ad56a7f8b766795bda7b6baa69aaa9c09864f297d376feacbe4ba08249da2d8d 0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch
|
||||
4be2f8ab07e5ff2b018c633e057927446259b63cc65229f977c84b294820d1dbecc29c2e6167b3cb000a5995e7def64cd8191031ee2b2c2ec3e5b4ad70267083 0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch
|
||||
e97e619874c0edb60d826669426f96b6f09b79849538415ee1a205345a574ea292de5f324925dd1c821859a3c4873a2392e11edcd6ac6b53f6d6d389b25ffe94 0006-Enable-Wformat-and-Wformat-security-by-default.patch
|
||||
c3081e7b37dcb2e2b4381e6fcc2abfa066bb4adc3ad4bdd7bd1402a6a3ccc354bfcf713c6acb379001dd97e14e6bdc8eb2eeca6b1e45262bea3262d51394c0e6 0007-Enable-Wtrampolines-by-default.patch
|
||||
cc602c71b0893b058021cd45d239c3e9f013f68cd56f642fcdad342456bae9ea08ddf0929a6c2e6e452987d1d8c4be97dfe0314d9107e01bf6403ce97e83a30f 0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch
|
||||
0bc96d3a2afd0499e01b47a8197f9a5ead04219d0674f0dea97a4654def7dca2c50d8c005d04558212d53e4ec9fcf2bf4a3286d7a12b24eba0134aa1197abfe1 0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch
|
||||
2662eadcc54408f5c6596e24615a6771c046575a53b8aec65677fcaa699446021b8f3360efc7660d72bf004bffd98f9d4f9d64eba97dedcbb752bb3fffc5a048 0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch
|
||||
0003e594bbbf142d678f0f79fc03ff467276331a8c87016ecd5f9683abb14aea2550e6880995dd160dc92a3e4ec04e4b2323eda403d4fa8453c258c28bcc969e 0011-libiberty-copy-PIC-objects-during-build-process.patch
|
||||
209f7cfb281c3c10af2b84e1542e9093bb0fb36171c7d12ce33b1d92a70388d0aae7b1bb22a613a59e352de62927a0f8e9d3a0b4729c12f8eebacc74d29ecfdd 0012-libitm-disable-FORTIFY.patch
|
||||
e72ad6130dd5dd64ef34ff9f07cf23d310d0d530b272fa1bdc9459991dfb10eec64af3249f213d7f4393024d7d5111890f74679e1029ee0e97b1b6c12a708296 0013-libgcc_s.patch
|
||||
16fa64460806a6456c8185cf703e7afdf87f55cf49256ed06fd1c098d97d69a3d1df715bb409984ebd275009495ac9ee01bc090580558d2ff569fa2dbbff5fa6 0014-nopie.patch
|
||||
e054c819446d58e119570cca88a23f541c215c8e4a6eb65d194b97610046593981aaa306d74d39ad6868cb2a85da510dedefd0b729804e3b88a518e4a0897d20 0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch
|
||||
1b70eae1dfb7b819555c51c51d88b9acd09f44d491bf09b265bed7027721c3a74628715fd1bbc537ba43071e98e6747e08ad117b78fedda19571d7a8f6e2c9db 0016-dlang-update-zlib-binding.patch
|
||||
9f4cf47a2f4016cb6808f245159d9365134963765af41654d60c2f62d4622405f1d1041c3690d50a2db9501075ccc932efd32c739bb0d241af5b80829cb8bafe 0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch
|
||||
55ca9cc19376ac4ce333abdee700e185811455419da80b0f6d765d079aa1344073d09883add920530ad62a3b9c01c347f634931f3735cb021b81b8fd7229467c 0018-ada-fix-shared-linking.patch
|
||||
b461122d5bc5778398c72bc02bef6ee344ba6c79b7ff9945f9d252559ad445b298e154d7c4784e22fc5cf9d299fc3a8cfc3c0e4d37f12b961148e0432ac4e434 0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch
|
||||
61fdf02497bc5d90bdc1c9b2aa0294bbe1ab4285940dc840d94bda00b0c4dec342df639b11721e5569a6de47e53099928f1f1fb07ddcf3466535e8092b2af9a7 0020-libstdc-futex-add-time64-compatibility.patch
|
||||
b40fb4f96693a7a0cec086c24f17ba5c8c416e67d76d468306b26895033ee326454a2b2d3028077b9f2187c545bff8c99e87d44298c179ccbc1f48f04ccc0889 0021-add-fortify-headers-paths.patch
|
||||
7a7414d44a43260d7098bf24dacea6595fdaf42496ef1d176bb7a254da813c1faaf1ecfa6e1463af34c466f02cf2f8489dbfeae9bbfb070726d27da0330e4c59 0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch
|
||||
7bd3b297a05df00a0c961c407d84c60b7dcf5150919a6ce8e6d5162bb82e5820ae938feec24dad62dca141b4ede302345b6e08e21f06dd9393bec7592a8aecf7 0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch
|
||||
5c61dac5100dce45ad17f45e5e63e3f1e46173639384d7fb3c343e0b6a1e4c0ab39491d397c4445be63cf182f3bb79f7995cc8f89f70a61321dea24bf29cdd18 0024-Pure-64-bit-MIPS.patch
|
||||
be8eee9edfe4e768ea4873b618a3431ae4502e933af343f80b623e38626c0e9187b73debd6773ae8dfbfb514ff0e4a18a5102e5fac4545e5de18f8e226e6b237 0025-use-pure-64-bit-configuration-where-appropriate.patch
|
||||
2a2c89b3dfac37344bc17fbb9471b903cbdf4332c71bb20942587acccf962a42d58d2535cc0d90a0f6cddc8f6db1328c6b9f158aecbff99a92f9fa0e0683c0a7 0026-always-build-libgcc_eh.a.patch
|
||||
739e9d58875c291af82ca9d7509f52679a01704beb4f003e3ace1cd1ae2aede5763243e34c2c73be13bd1dd46539f50d3b7c7a293686b0c6158d3069d377009e 0027-ada-libgnarl-compatibility-for-musl.patch
|
||||
69f330f91a3354753e9283e804f18257c3e7a51f368defe4a704d20c2a00fd6d6cb62f4d7931ca886dd7dffeaf59fa9beaf36c19ebd3d25cdebfefc884d64c02 0028-ada-musl-support-fixes.patch"
|
||||
ee2d344e912ebaddf71d53ff674ca7ea7837ee65f982a8f088339fd05261e441aace6087f7f936d32b502bff7e375094f48cb90562ab7734c57e1750d3fe2029 0001-posix_memalign.patch
|
||||
deaf3ba25614df18b2b9b04244bcc9278c16d98f6fdeac17f7e2c0567be7c2836ab6d21fc9d8f779c672022d25fc278327d6d0d637bc200fadbb8d913ef95581 0002-gcc-poison-system-directories.patch
|
||||
eb80ea94e008e33b97c8c0d47e74d639897a13357abbd130e9bff4ae30349b8f788acbaf4caa61f23022a86841c431b8bb639c536aab548dc735470a7c7ccfcf 0003-Turn-on-Wl-z-relro-z-now-by-default.patch
|
||||
6cbc39dd24f7b4316b6e69940bf7c9f3ae889e8156f9c7dd72c8335e55a2a44d6fade37954296451b588bf8fc065514d4916ad527042b8f9a86d6e0d706e3c9c 0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch
|
||||
e8c75aef864e5852fc78bfd7949232fc58b40a743d7c04a122ee6e021ee99f72edcff6efbf74e0eedc9405faf81d01208867b0571c4dc8cb44b9a03d1d25fbde 0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch
|
||||
d5b3d40e1c4828d16684137487f64bf0b4b892fabc403f975f37d481a22647f923a3524a12714898937abdfbf875411e50b522134535f8d1852f103310aef5a3 0006-Enable-Wformat-and-Wformat-security-by-default.patch
|
||||
e568a17fb3348964c0d21e7d67ffeae4f2f0dfd3f2986aaf9cec86c685c13f0c830dfc019b6bd7fe58b8635e5b8fca7ad992a92210f2be285b8cac6467c33a78 0007-Enable-Wtrampolines-by-default.patch
|
||||
fd47150c72138d47a9faafe8586e84456e09a4ca0ed1ba9be7b5b2a351b1ca2d17b238beaa42c88888402d181933ff68cef0a91f0c3bd26d374706cf71726bbd 0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch
|
||||
820be83d93ff5b8d8fc69cdeccec0c6ac2544ee6cce43ae35e6829222791733a1c0b2232fb5a7ad93ab9e6cd677f077d01a4f9dec7aa9c38b013f74aa6c74fc3 0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch
|
||||
5be4c0ad27e3b86c06dcaefe34ee1271cb53ded3de9802bc1a8571497240ca870e22534f77adb52dc4556eb4861b94a6c9a39cf6a2e84ef62ee88a04a4a01868 0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch
|
||||
5024309e549b7e4a94f2af8bd727144bd27cf8b7cdcbb537a30f3dac28543697c214438da7af491e43cb90daac46344b7b0466729d5c4209ca8a3a0d5a7d027c 0011-libiberty-copy-PIC-objects-during-build-process.patch
|
||||
c0ebc205f6598edbe6d68b8a287c36ef80826b864e5b92b37f64e7a21ab7048cae67dd5650cd3d1399beb890753ad96e898a94c52d13b3ca7b266a15fed043ca 0012-libitm-disable-FORTIFY.patch
|
||||
4a4fae02231f49142ab90d4f3dcd093c13032781ff1659f6aca62da13f8c676e2ec9dcdd2e7959ec62835e13c515be9bd7a2e35d3c06768d44d9e1185cb40dac 0013-libgcc_s.patch
|
||||
9c513a30146364ecd899ca26a27019ea1ba353e8e409e0becb50d2a051022b701586b9276a4f118dbdd131c4882a04cad4188219bb10aa36d7b0bbe2eb2ceb03 0014-nopie.patch
|
||||
aec141251c3abae35b4dc3ecd3778e332fa5596282fea1fd08c8d5350d8a8740568910236ce8d38c5662232fa5412313cb0a1c7a46c79a5b5e2c643871bf643b 0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch
|
||||
d3fc4ea6918b4c4ce57eb45437f88ec3982bd5c8e17d282003e195dc705e0c84996ec140151b2b2371917595d2d62f30a2cb4676150c1bc8b8fd3b8fb85ecbe9 0016-dlang-update-zlib-binding.patch
|
||||
4ebf845f41c7a8ba5bfa624c8e1527eb0f15a48d6a8bd151435037bd4b9d71f955ac9b60ab453c0315d592e92f194be92b9c3fca40ed533d64c0a1995c3ad4be 0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch
|
||||
2ca085382a03d269a2f48ec49601328cec7c53eb69856ee55aea11610293c206e8881043030d2295f49a08a5897c9eb9a6126a5ae65edbd967e17e34dadfb2d8 0018-ada-fix-shared-linking.patch
|
||||
307a1ac2a6cea20c900b7bef2d5d7ad98c2b8cc45bdb2a6adbf151f3228d5de2670c75ddf48e4d3c9ceb7ed42852e24be534773551bc050ad10005faaee2600c 0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch
|
||||
d01d0031d97fa42363bd3fb0c0dda9b26e7f06660294f0ceec55624f6564f2ce372b9a255683c67d79dfa18fb8551416c04766debc2e1b9c587ef381eef64f0b 0020-libstdc-futex-add-time64-compatibility.patch
|
||||
e9eb5ff439cff4a22abaa7b9e27a176b51e1e1f4361fd829bd26e4b5ffc0e4583b1d6728b1510991b069b42f0aae8a2e698f85edecb1d792e4c7e10079507de8 0021-add-fortify-headers-paths.patch
|
||||
beb7aa26a3731855be2521495186af52d4764973f2bc1ad44554332e867fe52fa37bcb5747395e44ae0011413e702054a60a754ad81dd88bbf97e3c7c718f356 0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch
|
||||
ac3288b7840e5cf2500608773f40e604798b30fcb885c9fec7ba0bcc4bcfd374211faa26e82fcf4669bf624d5ccb0bdc747897759be77af3621b8b3bb08bff85 0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch
|
||||
7e953227e0d3f1105a754f3fdefbaaca0b106d337c5bcc9b6394712d7f47173f96906517030b508d5a57611cc637848f2e59aec92313b39f1e2221bd98729826 0024-Pure-64-bit-MIPS.patch
|
||||
12eaad6a8781e76f38bc4ba5c8cd09cfe0a0b95c0cde83fe58dc10bdec542fe43389f2c84bd313629c45af8ed3ffd46cc4478f5a4152ea1eb8d4b8276ede499c 0025-use-pure-64-bit-configuration-where-appropriate.patch
|
||||
73a649ac371f4a5da68c5f0b88010080efd7deaee29765ef7a299fd1654b5ccdbfee88c59e5d37ae55e37cf6fa218d989e411c04b17e0fd94268ed65d7dcd4bf 0026-always-build-libgcc_eh.a.patch
|
||||
59d9e0a5f39ad68b8bb1365f7c97a54ca4751cdad01ead8184fd897d8a13156145976a8b5b9856be154c053d6ba11eaad1e5662e7ddda9ba6d2811340df61cba 0027-ada-libgnarl-compatibility-for-musl.patch
|
||||
8207323c530929517c799b24b1a7ba39c07bbb0e6770f878f1d66088ae16667e7706c9402ac04fe5eb6447a6ad12b548cc7e7612c5b217cd24e7d00094d2a28f 0028-ada-musl-support-fixes.patch
|
||||
b90f7ad074b6183a4afc6be65349b8bf94b78d1c259d5be9877c16e3de95222fb6905cba7eb6ee4fe1e564ed20bf183c6815bd087896b6b0376656a841736fc1 0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch
|
||||
39a66708fb7ab4a72e1973749e32c22484e8e6c0afde6a59a645f2536c71cea86c8de2f0448621d53888293121344e84a24617400fae849282df57e0f5ddc21d 0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 399f9e74a691ca6272d460d72d1b47afcad84752 Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Fri, 26 Jan 2018 20:32:50 +0000
|
||||
Subject: [PATCH 01/28] posix_memalign
|
||||
Subject: [PATCH 01/30] posix_memalign
|
||||
|
||||
---
|
||||
gcc/config/i386/pmm_malloc.h | 9 +++++----
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 0e993b1b9a33910193862d76facf34bdbe58ed01 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:59:00 +0400
|
||||
Subject: [PATCH 02/28] gcc: poison-system-directories
|
||||
Subject: [PATCH 02/30] gcc: poison-system-directories
|
||||
|
||||
Add /sw/include and /opt/include based on the original
|
||||
zecke-no-host-includes.patch patch. The original patch checked for
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From a35a55940c3402f8ebb510ec7d8bc67e85051277 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:45:49 +0000
|
||||
Subject: [PATCH 03/28] Turn on -Wl,-z,relro,-z,now by default.
|
||||
Subject: [PATCH 03/30] Turn on -Wl,-z,relro,-z,now by default.
|
||||
|
||||
---
|
||||
gcc/doc/invoke.texi | 3 +++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From d2865d0a184ef59be8893dd34edf5037c4bf48f7 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:46:22 +0000
|
||||
Subject: [PATCH 04/28] Turn on -D_FORTIFY_SOURCE=2 by default for C, C++,
|
||||
Subject: [PATCH 04/30] Turn on -D_FORTIFY_SOURCE=2 by default for C, C++,
|
||||
ObjC, ObjC++, if the optimization level is > 0
|
||||
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 872e0a15a2b74cd6b6ba58e2e7e1605543ea36bd Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:46:56 +0000
|
||||
Subject: [PATCH 05/28] On linux targets pass --as-needed by default to the
|
||||
Subject: [PATCH 05/30] On linux targets pass --as-needed by default to the
|
||||
linker, but always link the sanitizer libraries with --no-as-needed.
|
||||
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 5e20872b8cc916cb457c63c6cd970c4fcba47bbb Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:47:43 +0000
|
||||
Subject: [PATCH 06/28] Enable -Wformat and -Wformat-security by default.
|
||||
Subject: [PATCH 06/30] Enable -Wformat and -Wformat-security by default.
|
||||
|
||||
---
|
||||
gcc/c-family/c.opt | 4 ++--
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 1bcf7e30226852db956becebaffdfe2738923423 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:48:24 +0000
|
||||
Subject: [PATCH 07/28] Enable -Wtrampolines by default.
|
||||
Subject: [PATCH 07/30] Enable -Wtrampolines by default.
|
||||
|
||||
---
|
||||
gcc/common.opt | 2 +-
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 23fd86ff34670873dd294bd87b93f45c3624903a Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:49:40 +0000
|
||||
Subject: [PATCH 08/28] Disable ssp on -nostdlib, -nodefaultlibs and
|
||||
Subject: [PATCH 08/30] Disable ssp on -nostdlib, -nodefaultlibs and
|
||||
-ffreestanding Change the buffer size.
|
||||
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From d27d7936ecd9f357a3c6ee05e6548f8a68fdd4b7 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:50:33 +0000
|
||||
Subject: [PATCH 09/28] Ensure that msgfmt doesn't encounter problems during
|
||||
Subject: [PATCH 09/30] Ensure that msgfmt doesn't encounter problems during
|
||||
gcc bootstrapping.
|
||||
|
||||
Solves error messages like the following:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 2ec258d6d31e2c0c614c5086acee84a87768a67c Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:52:07 +0000
|
||||
Subject: [PATCH 10/28] Don't declare asprintf if defined as a macro.
|
||||
Subject: [PATCH 10/30] Don't declare asprintf if defined as a macro.
|
||||
|
||||
---
|
||||
include/libiberty.h | 3 +++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 4f6fd2272f57620da399d0f841fce12b9db3b2d1 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:53:00 +0000
|
||||
Subject: [PATCH 11/28] libiberty: copy PIC objects during build process
|
||||
Subject: [PATCH 11/30] libiberty: copy PIC objects during build process
|
||||
|
||||
---
|
||||
libiberty/Makefile.in | 1 +
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From cef5e0336cfdf4afd0e01fa9e562f686b234697a Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:53:36 +0000
|
||||
Subject: [PATCH 12/28] libitm: disable FORTIFY
|
||||
Subject: [PATCH 12/30] libitm: disable FORTIFY
|
||||
|
||||
---
|
||||
libitm/configure.tgt | 10 ++++++++++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From d31721459e363e49dfe0a7797300864d9cef92f0 Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Sat, 24 Oct 2015 20:09:53 +0000
|
||||
Subject: [PATCH 13/28] libgcc_s
|
||||
Subject: [PATCH 13/30] libgcc_s
|
||||
|
||||
---
|
||||
gcc/config/i386/i386-expand.c | 4 ++--
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From f64f853eae3b390adbbc9b74a336d93918e6dca4 Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Sat, 7 Nov 2015 02:08:05 +0000
|
||||
Subject: [PATCH 14/28] nopie
|
||||
Subject: [PATCH 14/30] nopie
|
||||
|
||||
---
|
||||
gcc/configure | 27 +++++++++++++++++++++++++++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 37dace030c1402a8e6734a0fc59e18717ce1a2ef Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:57:09 +0000
|
||||
Subject: [PATCH 15/28] libffi: use __linux__ instead of __gnu_linux__ for musl
|
||||
Subject: [PATCH 15/30] libffi: use __linux__ instead of __gnu_linux__ for musl
|
||||
|
||||
---
|
||||
libffi/src/closures.c | 2 +-
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 7fc386a2e629e859968da4eb4d0ff4983cb3b76f Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:57:51 +0000
|
||||
Subject: [PATCH 16/28] dlang: update zlib binding
|
||||
Subject: [PATCH 16/30] dlang: update zlib binding
|
||||
|
||||
---
|
||||
libphobos/src/std/zlib.d | 266 ++++++++++++++++++++++++++++-----------
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From ef5f7880cff27a2b92952ce53a207d5dd896923b Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:58:22 +0000
|
||||
Subject: [PATCH 17/28] dlang: fix fcntl on mips, add libucontext dep
|
||||
Subject: [PATCH 17/30] dlang: fix fcntl on mips, add libucontext dep
|
||||
|
||||
---
|
||||
libphobos/configure.tgt | 1 +
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From b675e0383262d6d702f5b732e4459d3e2c2a4891 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:59:16 +0000
|
||||
Subject: [PATCH 18/28] ada: fix shared linking
|
||||
Subject: [PATCH 18/30] ada: fix shared linking
|
||||
|
||||
---
|
||||
gcc/ada/link.c | 12 ++++++------
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 0ea91dd6f8d856d5b589c2a3e95469fea06e7094 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 06:59:43 +0000
|
||||
Subject: [PATCH 19/28] build: fix CXXFLAGS_FOR_BUILD passing
|
||||
Subject: [PATCH 19/30] build: fix CXXFLAGS_FOR_BUILD passing
|
||||
|
||||
---
|
||||
Makefile.in | 1 +
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 9684a815e1cbe854383c3c511e1d84d43c46ec94 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:00:17 +0000
|
||||
Subject: [PATCH 20/28] libstdc++: futex: add time64 compatibility
|
||||
Subject: [PATCH 20/30] libstdc++: futex: add time64 compatibility
|
||||
|
||||
---
|
||||
libstdc++-v3/src/c++11/futex.cc | 8 ++++++++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From a0708ec975c01b049d254dc51179898966bf8a52 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:01:06 +0000
|
||||
Subject: [PATCH 21/28] add fortify-headers paths
|
||||
Subject: [PATCH 21/30] add fortify-headers paths
|
||||
|
||||
---
|
||||
gcc/config/linux.h | 2 ++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 740342a0e4b0b3af498964440918abba1a27ba33 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
|
||||
Date: Fri, 21 Aug 2020 07:03:00 +0000
|
||||
Subject: [PATCH 22/28] Alpine musl package provides libssp_nonshared.a. We
|
||||
Subject: [PATCH 22/30] Alpine musl package provides libssp_nonshared.a. We
|
||||
link to it unconditionally, as otherwise we get link failures if some objects
|
||||
are -fstack-protector built and final link happens with -fno-stack-protector.
|
||||
This seems to be the common case when bootstrapping gcc, the piepatches do
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 775adf35d6f34f61947fc28a2bdbfa7e881c40d5 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:03:42 +0000
|
||||
Subject: [PATCH 23/28] DP: Use --push-state/--pop-state for gold as well when
|
||||
Subject: [PATCH 23/30] DP: Use --push-state/--pop-state for gold as well when
|
||||
linking libtsan.
|
||||
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 717090cf538f765db1730956c512a43f2d52a802 Mon Sep 17 00:00:00 2001
|
||||
From: Nils Andreas Svee <me@lochnair.net>
|
||||
Date: Thu, 21 Dec 2017 03:14:33 +0100
|
||||
Subject: [PATCH 24/28] Pure 64-bit MIPS
|
||||
Subject: [PATCH 24/30] Pure 64-bit MIPS
|
||||
|
||||
---
|
||||
gcc/config/mips/mips.h | 8 ++++----
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From f73cf8d2f8f4eee71fc2ba850672e69f509a4486 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:04:40 +0000
|
||||
Subject: [PATCH 25/28] use pure 64-bit configuration where appropriate
|
||||
Subject: [PATCH 25/30] use pure 64-bit configuration where appropriate
|
||||
|
||||
---
|
||||
gcc/config/aarch64/t-aarch64-linux | 2 +-
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 8472f6d0037dcd19c44b1e95d95fbf937b3823e6 Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:05:41 +0000
|
||||
Subject: [PATCH 26/28] always build libgcc_eh.a
|
||||
Subject: [PATCH 26/30] always build libgcc_eh.a
|
||||
|
||||
highly inspired by:
|
||||
http://landley.net/hg/aboriginal/file/7e0747a665ab/sources/patches/gcc-core-libgcceh.patch
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 4e1b3a26f558e7693853d3600ee677705e67406c Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:06:30 +0000
|
||||
Subject: [PATCH 27/28] ada: libgnarl compatibility for musl
|
||||
Subject: [PATCH 27/30] ada: libgnarl compatibility for musl
|
||||
|
||||
---
|
||||
gcc/ada/libgnarl/s-osinte__linux.ads | 11 ------
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 5e3d7d2f1e2448b6c5eb207f9251c437629e43bc Mon Sep 17 00:00:00 2001
|
||||
From: Ariadne Conill <ariadne@dereferenced.org>
|
||||
Date: Fri, 21 Aug 2020 07:07:48 +0000
|
||||
Subject: [PATCH 28/28] ada: musl support fixes
|
||||
Subject: [PATCH 28/30] ada: musl support fixes
|
||||
|
||||
---
|
||||
gcc/ada/Makefile.rtl | 10 +++++-----
|
||||
|
|
|
@ -0,0 +1,520 @@
|
|||
From d6599f89ba558ec2a68d4bc4af15cf3513218054 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Sandiford <richard.sandiford@arm.com>
|
||||
Date: Mon, 3 Aug 2020 09:48:36 +0100
|
||||
Subject: [PATCH 29/30] c: Fix bogus vector initialisation error [PR96377]
|
||||
|
||||
One of the problems in this PR was that if we had:
|
||||
|
||||
vector_type1 array[] = { vector_value1 };
|
||||
|
||||
process_init_element would only treat vector_value1 as initialising
|
||||
a vector_type1 if they had the same TYPE_MAIN_VARIANT. This has
|
||||
several problems:
|
||||
|
||||
(1) It gives confusing error messages if the vector types are
|
||||
incompatible. (Tested by gcc.dg/pr96377-1.c.)
|
||||
|
||||
(2) It means that we reject code that should be valid with
|
||||
-flax-vector-conversions. (Tested by gcc.dg/pr96377-2.c.)
|
||||
|
||||
(3) On arm and aarch64 targets, it means that we reject some
|
||||
initializers that mix Advanced SIMD and standard GNU vectors.
|
||||
These vectors have traditionally had different TYPE_MAIN_VARIANTs
|
||||
because they have different mangling schemes. (Tested by
|
||||
gcc.dg/pr96377-[3-6].c.)
|
||||
|
||||
(4) It means that we reject SVE initializers that should be valid.
|
||||
(Tested by gcc.target/aarch64/sve/gnu_vectors_[34].c.)
|
||||
|
||||
(5) After r11-1741-g:31427b974ed7b7dd54e2 we reject:
|
||||
|
||||
arm_neon_type1 array[] = { k ^ arm_neon_value1 };
|
||||
|
||||
because applying the binary operator to arm_neon_value1 strips
|
||||
the "Advanced SIMD type" attributes that were added in that patch.
|
||||
Stripping the attributes is problematic for other reasons though,
|
||||
so that still needs to be fixed separately.
|
||||
|
||||
g++.target/aarch64/sve/gnu_vectors_[34].C already pass.
|
||||
|
||||
gcc/c/
|
||||
PR c/96377
|
||||
* c-typeck.c (process_init_element): Split test for whether to
|
||||
recurse into a record, union or array into...
|
||||
(initialize_elementwise_p): ...this new function. Don't recurse
|
||||
into a vector type if the initialization value is also a vector.
|
||||
|
||||
gcc/testsuite/
|
||||
PR c/96377
|
||||
* gcc.dg/pr96377-1.c: New test.
|
||||
* gcc.dg/pr96377-2.c: Likewise.
|
||||
* gcc.dg/pr96377-3.c: Likewise.
|
||||
* gcc.dg/pr96377-4.c: Likewise.
|
||||
* gcc.dg/pr96377-5.c: Likewise.
|
||||
* gcc.dg/pr96377-6.c: Likewise.
|
||||
* gcc.target/aarch64/pr96377-1.c: Likewise.
|
||||
* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c: Likewise.
|
||||
* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c: Likewise.
|
||||
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C: Likewise.
|
||||
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C: Likewise.
|
||||
|
||||
(cherry picked from commit 7d599ad27b9bcf5165f87710f1abc64bbabd06ae)
|
||||
---
|
||||
gcc/c/c-typeck.c | 59 ++++++++++++++-----
|
||||
.../sve/acle/general-c++/gnu_vectors_3.C | 15 +++++
|
||||
.../sve/acle/general-c++/gnu_vectors_4.C | 15 +++++
|
||||
gcc/testsuite/gcc.dg/pr96377-1.c | 32 ++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-2.c | 31 ++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-3.c | 33 +++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-4.c | 32 ++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-5.c | 33 +++++++++++
|
||||
gcc/testsuite/gcc.dg/pr96377-6.c | 32 ++++++++++
|
||||
gcc/testsuite/gcc.target/aarch64/pr96377-1.c | 20 +++++++
|
||||
.../sve/acle/general-c/gnu_vectors_3.c | 15 +++++
|
||||
.../sve/acle/general-c/gnu_vectors_4.c | 15 +++++
|
||||
12 files changed, 317 insertions(+), 15 deletions(-)
|
||||
create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
|
||||
create mode 100644 gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-1.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-2.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-3.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-4.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-5.c
|
||||
create mode 100644 gcc/testsuite/gcc.dg/pr96377-6.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/aarch64/pr96377-1.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
|
||||
|
||||
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
|
||||
index eb4b641e6bb..58762f10a93 100644
|
||||
--- a/gcc/c/c-typeck.c
|
||||
+++ b/gcc/c/c-typeck.c
|
||||
@@ -9910,6 +9910,47 @@ output_pending_init_elements (int all, struct obstack * braced_init_obstack)
|
||||
goto retry;
|
||||
}
|
||||
|
||||
+/* Expression VALUE coincides with the start of type TYPE in a braced
|
||||
+ initializer. Return true if we should treat VALUE as initializing
|
||||
+ the first element of TYPE, false if we should treat it as initializing
|
||||
+ TYPE as a whole.
|
||||
+
|
||||
+ If the initializer is clearly invalid, the question becomes:
|
||||
+ which choice gives the best error message? */
|
||||
+
|
||||
+static bool
|
||||
+initialize_elementwise_p (tree type, tree value)
|
||||
+{
|
||||
+ if (type == error_mark_node || value == error_mark_node)
|
||||
+ return false;
|
||||
+
|
||||
+ gcc_checking_assert (TYPE_MAIN_VARIANT (type) == type);
|
||||
+
|
||||
+ tree value_type = TREE_TYPE (value);
|
||||
+ if (value_type == error_mark_node)
|
||||
+ return false;
|
||||
+
|
||||
+ /* GNU vectors can be initialized elementwise. However, treat any
|
||||
+ kind of vector value as initializing the vector type as a whole,
|
||||
+ regardless of whether the value is a GNU vector. Such initializers
|
||||
+ are valid if and only if they would have been valid in a non-braced
|
||||
+ initializer like:
|
||||
+
|
||||
+ TYPE foo = VALUE;
|
||||
+
|
||||
+ so recursing into the vector type would be at best confusing or at
|
||||
+ worst wrong. For example, when -flax-vector-conversions is in effect,
|
||||
+ it's possible to initialize a V8HI from a V4SI, even though the vectors
|
||||
+ have different element types and different numbers of elements. */
|
||||
+ if (gnu_vector_type_p (type))
|
||||
+ return !VECTOR_TYPE_P (value_type);
|
||||
+
|
||||
+ if (AGGREGATE_TYPE_P (type))
|
||||
+ return type != TYPE_MAIN_VARIANT (value_type);
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
/* Add one non-braced element to the current constructor level.
|
||||
This adjusts the current position within the constructor's type.
|
||||
This may also start or terminate implicit levels
|
||||
@@ -10089,11 +10130,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
|
||||
/* Otherwise, if we have come to a subaggregate,
|
||||
and we don't have an element of its type, push into it. */
|
||||
else if (value.value != NULL_TREE
|
||||
- && value.value != error_mark_node
|
||||
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
|
||||
- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
|
||||
- || fieldcode == UNION_TYPE
|
||||
- || gnu_vector_type_p (fieldtype)))
|
||||
+ && initialize_elementwise_p (fieldtype, value.value))
|
||||
{
|
||||
push_init_level (loc, 1, braced_init_obstack);
|
||||
continue;
|
||||
@@ -10181,11 +10218,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
|
||||
/* Otherwise, if we have come to a subaggregate,
|
||||
and we don't have an element of its type, push into it. */
|
||||
else if (value.value != NULL_TREE
|
||||
- && value.value != error_mark_node
|
||||
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype
|
||||
- && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE
|
||||
- || fieldcode == UNION_TYPE
|
||||
- || gnu_vector_type_p (fieldtype)))
|
||||
+ && initialize_elementwise_p (fieldtype, value.value))
|
||||
{
|
||||
push_init_level (loc, 1, braced_init_obstack);
|
||||
continue;
|
||||
@@ -10224,11 +10257,7 @@ process_init_element (location_t loc, struct c_expr value, bool implicit,
|
||||
/* Otherwise, if we have come to a subaggregate,
|
||||
and we don't have an element of its type, push into it. */
|
||||
else if (value.value != NULL_TREE
|
||||
- && value.value != error_mark_node
|
||||
- && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != elttype
|
||||
- && (eltcode == RECORD_TYPE || eltcode == ARRAY_TYPE
|
||||
- || eltcode == UNION_TYPE
|
||||
- || gnu_vector_type_p (elttype)))
|
||||
+ && initialize_elementwise_p (elttype, value.value))
|
||||
{
|
||||
push_init_level (loc, 1, braced_init_obstack);
|
||||
continue;
|
||||
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
|
||||
new file mode 100644
|
||||
index 00000000000..e607d58d726
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* { dg-options "-msve-vector-bits=256" } */
|
||||
+
|
||||
+#include <arm_sve.h>
|
||||
+
|
||||
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
|
||||
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
|
||||
+
|
||||
+void
|
||||
+f (svuint8_t sve_u1, svint8_t sve_s1,
|
||||
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
|
||||
+{
|
||||
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
|
||||
+ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "cannot convert" }
|
||||
+ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "cannot convert" }
|
||||
+}
|
||||
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
|
||||
new file mode 100644
|
||||
index 00000000000..ac4e0d12ff8
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
|
||||
+
|
||||
+#include <arm_sve.h>
|
||||
+
|
||||
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
|
||||
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
|
||||
+
|
||||
+void
|
||||
+f (svuint8_t sve_u1, svint8_t sve_s1,
|
||||
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
|
||||
+{
|
||||
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
|
||||
+ gnu_uint8_t arr2[] = { gnu_s1 };
|
||||
+ gnu_uint8_t arr3[] = { sve_s1 };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-1.c b/gcc/testsuite/gcc.dg/pr96377-1.c
|
||||
new file mode 100644
|
||||
index 00000000000..2bf3f816331
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-1.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* { dg-options "-fno-lax-vector-conversions" } */
|
||||
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { v8hi x; v4si y; };
|
||||
+union u1 { v8hi x; v4si y; };
|
||||
+union u2 { v4si s; v8hi y; };
|
||||
+
|
||||
+void
|
||||
+foo (v4si i, v8hi h)
|
||||
+{
|
||||
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
|
||||
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-2.c b/gcc/testsuite/gcc.dg/pr96377-2.c
|
||||
new file mode 100644
|
||||
index 00000000000..f58b06d9076
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-2.c
|
||||
@@ -0,0 +1,31 @@
|
||||
+/* { dg-options "-flax-vector-conversions" } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { v8hi x; v4si y; };
|
||||
+union u1 { v8hi x; v4si y; };
|
||||
+union u2 { v4si s; v8hi y; };
|
||||
+
|
||||
+void
|
||||
+foo (v4si i, v8hi h)
|
||||
+{
|
||||
+ struct s x1 = { i, i };
|
||||
+ struct s x2 = { h, h };
|
||||
+ struct s x3 = { i, h };
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i };
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h };
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h };
|
||||
+ v4si z3[] = { h, i };
|
||||
+ v4si z4[] = { h, h };
|
||||
+ v8hi z5[] = { i, i };
|
||||
+ v8hi z6[] = { i, h };
|
||||
+ v8hi z7[] = { h, i };
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-3.c b/gcc/testsuite/gcc.dg/pr96377-3.c
|
||||
new file mode 100644
|
||||
index 00000000000..66dce01f277
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-3.c
|
||||
@@ -0,0 +1,33 @@
|
||||
+/* { dg-do compile { target aarch64*-*-* } } */
|
||||
+/* { dg-options "-fno-lax-vector-conversions" } */
|
||||
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { v8hi x; v4si y; };
|
||||
+union u1 { v8hi x; v4si y; };
|
||||
+union u2 { v4si s; v8hi y; };
|
||||
+
|
||||
+void
|
||||
+foo (__Int32x4_t i, __Int16x8_t h)
|
||||
+{
|
||||
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__vector" }
|
||||
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-4.c b/gcc/testsuite/gcc.dg/pr96377-4.c
|
||||
new file mode 100644
|
||||
index 00000000000..f7aaf490031
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-4.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* { dg-do compile { target aarch64*-*-* } } */
|
||||
+/* { dg-options "-flax-vector-conversions" } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { v8hi x; v4si y; };
|
||||
+union u1 { v8hi x; v4si y; };
|
||||
+union u2 { v4si s; v8hi y; };
|
||||
+
|
||||
+void
|
||||
+foo (__Int32x4_t i, __Int16x8_t h)
|
||||
+{
|
||||
+ struct s x1 = { i, i };
|
||||
+ struct s x2 = { h, h };
|
||||
+ struct s x3 = { i, h };
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i };
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h };
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h };
|
||||
+ v4si z3[] = { h, i };
|
||||
+ v4si z4[] = { h, h };
|
||||
+ v8hi z5[] = { i, i };
|
||||
+ v8hi z6[] = { i, h };
|
||||
+ v8hi z7[] = { h, i };
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-5.c b/gcc/testsuite/gcc.dg/pr96377-5.c
|
||||
new file mode 100644
|
||||
index 00000000000..3d0c24befa6
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-5.c
|
||||
@@ -0,0 +1,33 @@
|
||||
+/* { dg-do compile { target aarch64*-*-* } } */
|
||||
+/* { dg-options "-fno-lax-vector-conversions" } */
|
||||
+/* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { __Int16x8_t x; __Int32x4_t y; };
|
||||
+union u1 { __Int16x8_t x; __Int32x4_t y; };
|
||||
+union u2 { __Int32x4_t s; __Int16x8_t y; };
|
||||
+
|
||||
+void
|
||||
+foo (v4si i, v8hi h)
|
||||
+{
|
||||
+ struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__Int16x8_t" }
|
||||
+ struct s x2 = { h, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x3 = { i, h }; // { dg-error "incompatible types" }
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i }; // { dg-error "incompatible types" }
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h }; // { dg-error "incompatible types" }
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v4si z3[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v4si z4[] = { h, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
|
||||
+ v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.dg/pr96377-6.c b/gcc/testsuite/gcc.dg/pr96377-6.c
|
||||
new file mode 100644
|
||||
index 00000000000..165327fa292
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/pr96377-6.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* { dg-do compile { target aarch64*-*-* } } */
|
||||
+/* { dg-options "-flax-vector-conversions" } */
|
||||
+
|
||||
+typedef int v4si __attribute__((vector_size(16)));
|
||||
+typedef short v8hi __attribute__((vector_size(16)));
|
||||
+
|
||||
+struct s { __Int16x8_t x; __Int32x4_t y; };
|
||||
+union u1 { __Int16x8_t x; __Int32x4_t y; };
|
||||
+union u2 { __Int32x4_t s; __Int16x8_t y; };
|
||||
+
|
||||
+void
|
||||
+foo (v4si i, v8hi h)
|
||||
+{
|
||||
+ struct s x1 = { i, i };
|
||||
+ struct s x2 = { h, h };
|
||||
+ struct s x3 = { i, h };
|
||||
+ struct s x4 = { h, i };
|
||||
+
|
||||
+ union u1 y1 = { i };
|
||||
+ union u1 y2 = { h };
|
||||
+ union u2 y3 = { i };
|
||||
+ union u2 y4 = { h };
|
||||
+
|
||||
+ v4si z1[] = { i, i };
|
||||
+ v4si z2[] = { i, h };
|
||||
+ v4si z3[] = { h, i };
|
||||
+ v4si z4[] = { h, h };
|
||||
+ v8hi z5[] = { i, i };
|
||||
+ v8hi z6[] = { i, h };
|
||||
+ v8hi z7[] = { h, i };
|
||||
+ v8hi z8[] = { h, h };
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.target/aarch64/pr96377-1.c b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
|
||||
new file mode 100644
|
||||
index 00000000000..51e3e36edfc
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/aarch64/pr96377-1.c
|
||||
@@ -0,0 +1,20 @@
|
||||
+/* { dg-options "" } */
|
||||
+
|
||||
+#include <arm_neon.h>
|
||||
+
|
||||
+struct aegis128_state {
|
||||
+ uint8x16_t v[5];
|
||||
+};
|
||||
+
|
||||
+void foo(const void *key, const void *iv, const void *const0, const void *const1)
|
||||
+{
|
||||
+ uint8x16_t k = vld1q_u8(key);
|
||||
+ uint8x16_t kiv = k ^ vld1q_u8(iv);
|
||||
+ struct aegis128_state st = {{
|
||||
+ kiv,
|
||||
+ vld1q_u8(const1),
|
||||
+ vld1q_u8(const0),
|
||||
+ k ^ vld1q_u8(const0),
|
||||
+ k ^ vld1q_u8(const1),
|
||||
+ }};
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
|
||||
new file mode 100644
|
||||
index 00000000000..0f1a2b0e46b
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* { dg-options "-msve-vector-bits=256" } */
|
||||
+
|
||||
+#include <arm_sve.h>
|
||||
+
|
||||
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
|
||||
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
|
||||
+
|
||||
+void
|
||||
+f (svuint8_t sve_u1, svint8_t sve_s1,
|
||||
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
|
||||
+{
|
||||
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
|
||||
+ gnu_uint8_t arr2[] = { gnu_s1 }; // { dg-error "incompatible types" }
|
||||
+ gnu_uint8_t arr3[] = { sve_s1 }; // { dg-error "incompatible types" }
|
||||
+}
|
||||
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
|
||||
new file mode 100644
|
||||
index 00000000000..ac4e0d12ff8
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* { dg-options "-msve-vector-bits=256 -flax-vector-conversions" } */
|
||||
+
|
||||
+#include <arm_sve.h>
|
||||
+
|
||||
+typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
|
||||
+typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
|
||||
+
|
||||
+void
|
||||
+f (svuint8_t sve_u1, svint8_t sve_s1,
|
||||
+ gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1)
|
||||
+{
|
||||
+ gnu_uint8_t arr1[] = { gnu_u1, sve_u1 };
|
||||
+ gnu_uint8_t arr2[] = { gnu_s1 };
|
||||
+ gnu_uint8_t arr3[] = { sve_s1 };
|
||||
+}
|
||||
--
|
||||
2.27.0
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
From 773021143288f5bf0dca1e3ee1f908f580f6fd9c Mon Sep 17 00:00:00 2001
|
||||
From: Peter Bergner <bergner@linux.ibm.com>
|
||||
Date: Thu, 13 Aug 2020 13:40:39 -0500
|
||||
Subject: [PATCH 30/30] rs6000: ICE when using an MMA type as a function param
|
||||
or return value [PR96506]
|
||||
|
||||
PR96506 shows a problem where we ICE on illegal usage, namely using MMA
|
||||
types for function arguments and return values. The solution is to flag
|
||||
these illegal usages as errors early, before we ICE.
|
||||
|
||||
2020-08-13 Peter Bergner <bergner@linux.ibm.com>
|
||||
|
||||
gcc/
|
||||
PR target/96506
|
||||
* config/rs6000/rs6000-call.c (rs6000_promote_function_mode): Disallow
|
||||
MMA types as return values.
|
||||
(rs6000_function_arg): Disallow MMA types as function arguments.
|
||||
|
||||
gcc/testsuite/
|
||||
PR target/96506
|
||||
* gcc.target/powerpc/pr96506.c: New test.
|
||||
|
||||
(cherry picked from commit 0ad7e730c142ef6cd0ddc1491a89a7f330caa887)
|
||||
---
|
||||
gcc/config/rs6000/rs6000-call.c | 34 ++++++++++-
|
||||
gcc/testsuite/gcc.target/powerpc/pr96506.c | 66 ++++++++++++++++++++++
|
||||
2 files changed, 99 insertions(+), 1 deletion(-)
|
||||
create mode 100644 gcc/testsuite/gcc.target/powerpc/pr96506.c
|
||||
|
||||
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
|
||||
index 243601e90c1..37566780e54 100644
|
||||
--- a/gcc/config/rs6000/rs6000-call.c
|
||||
+++ b/gcc/config/rs6000/rs6000-call.c
|
||||
@@ -6076,8 +6076,30 @@ machine_mode
|
||||
rs6000_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
|
||||
machine_mode mode,
|
||||
int *punsignedp ATTRIBUTE_UNUSED,
|
||||
- const_tree, int)
|
||||
+ const_tree, int for_return)
|
||||
{
|
||||
+ /* Warning: this is a static local variable and not always NULL!
|
||||
+ This function is called multiple times for the same function
|
||||
+ and return value. PREV_FUNC is used to keep track of the
|
||||
+ first time we encounter a function's return value in order
|
||||
+ to not report an error with that return value multiple times. */
|
||||
+ static struct function *prev_func = NULL;
|
||||
+
|
||||
+ /* We do not allow MMA types being used as return values. Only report
|
||||
+ the invalid return value usage the first time we encounter it. */
|
||||
+ if (for_return
|
||||
+ && prev_func != cfun
|
||||
+ && (mode == POImode || mode == PXImode))
|
||||
+ {
|
||||
+ /* Record we have now handled function CFUN, so the next time we
|
||||
+ are called, we do not re-report the same error. */
|
||||
+ prev_func = cfun;
|
||||
+ if (TYPE_CANONICAL (type) != NULL_TREE)
|
||||
+ type = TYPE_CANONICAL (type);
|
||||
+ error ("invalid use of MMA type %qs as a function return value",
|
||||
+ IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
|
||||
+ }
|
||||
+
|
||||
PROMOTE_MODE (mode, *punsignedp, type);
|
||||
|
||||
return mode;
|
||||
@@ -7028,6 +7050,16 @@ rs6000_function_arg (cumulative_args_t cum_v, const function_arg_info &arg)
|
||||
machine_mode elt_mode;
|
||||
int n_elts;
|
||||
|
||||
+ /* We do not allow MMA types being used as function arguments. */
|
||||
+ if (mode == POImode || mode == PXImode)
|
||||
+ {
|
||||
+ if (TYPE_CANONICAL (type) != NULL_TREE)
|
||||
+ type = TYPE_CANONICAL (type);
|
||||
+ error ("invalid use of MMA operand of type %qs as a function parameter",
|
||||
+ IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))));
|
||||
+ return NULL_RTX;
|
||||
+ }
|
||||
+
|
||||
/* Return a marker to indicate whether CR1 needs to set or clear the
|
||||
bit that V.4 uses to say fp args were passed in registers.
|
||||
Assume that we don't need the marker for software floating point,
|
||||
diff --git a/gcc/testsuite/gcc.target/powerpc/pr96506.c b/gcc/testsuite/gcc.target/powerpc/pr96506.c
|
||||
new file mode 100644
|
||||
index 00000000000..b1b40c5a5c8
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/powerpc/pr96506.c
|
||||
@@ -0,0 +1,66 @@
|
||||
+/* PR target/96506 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-require-effective-target power10_ok } */
|
||||
+/* { dg-options "-mdejagnu-cpu=power10 -O2" } */
|
||||
+
|
||||
+extern void bar0();
|
||||
+extern void bar1();
|
||||
+extern void bar2();
|
||||
+extern void bar3();
|
||||
+
|
||||
+typedef __vector_pair vpair_t;
|
||||
+typedef __vector_quad vquad_t;
|
||||
+
|
||||
+/* Verify we flag errors on the following. */
|
||||
+
|
||||
+void
|
||||
+foo0 (void)
|
||||
+{
|
||||
+ __vector_pair v;
|
||||
+ bar0 (v); /* { dg-error "invalid use of MMA operand of type .__vector_pair. as a function parameter" } */
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+foo1 (void)
|
||||
+{
|
||||
+ vpair_t v;
|
||||
+ bar1 (v); /* { dg-error "invalid use of MMA operand of type .__vector_pair. as a function parameter" } */
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+foo2 (void)
|
||||
+{
|
||||
+ __vector_quad v;
|
||||
+ bar2 (v); /* { dg-error "invalid use of MMA operand of type .__vector_quad. as a function parameter" } */
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+foo3 (void)
|
||||
+{
|
||||
+ vquad_t v;
|
||||
+ bar3 (v); /* { dg-error "invalid use of MMA operand of type .__vector_quad. as a function parameter" } */
|
||||
+}
|
||||
+
|
||||
+__vector_pair
|
||||
+foo4 (__vector_pair *src) /* { dg-error "invalid use of MMA type .__vector_pair. as a function return value" } */
|
||||
+{
|
||||
+ return *src;
|
||||
+}
|
||||
+
|
||||
+vpair_t
|
||||
+foo5 (vpair_t *src) /* { dg-error "invalid use of MMA type .__vector_pair. as a function return value" } */
|
||||
+{
|
||||
+ return *src;
|
||||
+}
|
||||
+
|
||||
+__vector_quad
|
||||
+foo6 (__vector_quad *src) /* { dg-error "invalid use of MMA type .__vector_quad. as a function return value" } */
|
||||
+{
|
||||
+ return *src;
|
||||
+}
|
||||
+
|
||||
+vquad_t
|
||||
+foo7 (vquad_t *src) /* { dg-error "invalid use of MMA type .__vector_quad. as a function return value" } */
|
||||
+{
|
||||
+ return *src;
|
||||
+}
|
||||
--
|
||||
2.27.0
|
||||
|
|
@ -30,7 +30,7 @@ pkgver=10.2.0
|
|||
[ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target=""
|
||||
|
||||
pkgname=gcc-armv7
|
||||
pkgrel=1
|
||||
pkgrel=2
|
||||
pkgdesc="Stage2 cross-compiler for armv7"
|
||||
url="https://gcc.gnu.org"
|
||||
arch="x86_64"
|
||||
|
@ -201,6 +201,8 @@ source="https://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$pkgver}/gcc-${_pkg
|
|||
0026-always-build-libgcc_eh.a.patch
|
||||
0027-ada-libgnarl-compatibility-for-musl.patch
|
||||
0028-ada-musl-support-fixes.patch
|
||||
0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch
|
||||
0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch
|
||||
"
|
||||
|
||||
# gcc-4.8-build-args.patch
|
||||
|
@ -631,31 +633,33 @@ gnat() {
|
|||
}
|
||||
|
||||
sha512sums="42ae38928bd2e8183af445da34220964eb690b675b1892bbeb7cd5bb62be499011ec9a93397dba5e2fb681afadfc6f2767d03b9035b44ba9be807187ae6dc65e gcc-10.2.0.tar.xz
|
||||
5edc2dfe8e5d680c8c622b16943a1ec4e7f7db245e2fa4e54371962c048af1f074b1ed49f619f8abdf0eb97129d8b7198b4f16f06da794fe0fd6ce4d55f829fb 0001-posix_memalign.patch
|
||||
bff1c9a08d32186b94660c42823babd63729b2a050e761c514c3f23c7eac2585ddc4f748df547915fb6b2fc098f3ecc2e8d9707f3aef9bb9c6103ba92ed5f906 0002-gcc-poison-system-directories.patch
|
||||
7662cc8c6cd77a6cacb2899f4fb13d14495feb508bad9ee8ae0dd38ecddf8d45391ec636022913eece41661fbd5d336ac2130a5c08b2495eb5aff5501cff49a6 0003-Turn-on-Wl-z-relro-z-now-by-default.patch
|
||||
26303e588f37c4208c3da962972b83759daa5abaf8eaf4da331a4cf1e3a90590ad56a7f8b766795bda7b6baa69aaa9c09864f297d376feacbe4ba08249da2d8d 0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch
|
||||
4be2f8ab07e5ff2b018c633e057927446259b63cc65229f977c84b294820d1dbecc29c2e6167b3cb000a5995e7def64cd8191031ee2b2c2ec3e5b4ad70267083 0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch
|
||||
e97e619874c0edb60d826669426f96b6f09b79849538415ee1a205345a574ea292de5f324925dd1c821859a3c4873a2392e11edcd6ac6b53f6d6d389b25ffe94 0006-Enable-Wformat-and-Wformat-security-by-default.patch
|
||||
c3081e7b37dcb2e2b4381e6fcc2abfa066bb4adc3ad4bdd7bd1402a6a3ccc354bfcf713c6acb379001dd97e14e6bdc8eb2eeca6b1e45262bea3262d51394c0e6 0007-Enable-Wtrampolines-by-default.patch
|
||||
cc602c71b0893b058021cd45d239c3e9f013f68cd56f642fcdad342456bae9ea08ddf0929a6c2e6e452987d1d8c4be97dfe0314d9107e01bf6403ce97e83a30f 0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch
|
||||
0bc96d3a2afd0499e01b47a8197f9a5ead04219d0674f0dea97a4654def7dca2c50d8c005d04558212d53e4ec9fcf2bf4a3286d7a12b24eba0134aa1197abfe1 0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch
|
||||
2662eadcc54408f5c6596e24615a6771c046575a53b8aec65677fcaa699446021b8f3360efc7660d72bf004bffd98f9d4f9d64eba97dedcbb752bb3fffc5a048 0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch
|
||||
0003e594bbbf142d678f0f79fc03ff467276331a8c87016ecd5f9683abb14aea2550e6880995dd160dc92a3e4ec04e4b2323eda403d4fa8453c258c28bcc969e 0011-libiberty-copy-PIC-objects-during-build-process.patch
|
||||
209f7cfb281c3c10af2b84e1542e9093bb0fb36171c7d12ce33b1d92a70388d0aae7b1bb22a613a59e352de62927a0f8e9d3a0b4729c12f8eebacc74d29ecfdd 0012-libitm-disable-FORTIFY.patch
|
||||
e72ad6130dd5dd64ef34ff9f07cf23d310d0d530b272fa1bdc9459991dfb10eec64af3249f213d7f4393024d7d5111890f74679e1029ee0e97b1b6c12a708296 0013-libgcc_s.patch
|
||||
16fa64460806a6456c8185cf703e7afdf87f55cf49256ed06fd1c098d97d69a3d1df715bb409984ebd275009495ac9ee01bc090580558d2ff569fa2dbbff5fa6 0014-nopie.patch
|
||||
e054c819446d58e119570cca88a23f541c215c8e4a6eb65d194b97610046593981aaa306d74d39ad6868cb2a85da510dedefd0b729804e3b88a518e4a0897d20 0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch
|
||||
1b70eae1dfb7b819555c51c51d88b9acd09f44d491bf09b265bed7027721c3a74628715fd1bbc537ba43071e98e6747e08ad117b78fedda19571d7a8f6e2c9db 0016-dlang-update-zlib-binding.patch
|
||||
9f4cf47a2f4016cb6808f245159d9365134963765af41654d60c2f62d4622405f1d1041c3690d50a2db9501075ccc932efd32c739bb0d241af5b80829cb8bafe 0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch
|
||||
55ca9cc19376ac4ce333abdee700e185811455419da80b0f6d765d079aa1344073d09883add920530ad62a3b9c01c347f634931f3735cb021b81b8fd7229467c 0018-ada-fix-shared-linking.patch
|
||||
b461122d5bc5778398c72bc02bef6ee344ba6c79b7ff9945f9d252559ad445b298e154d7c4784e22fc5cf9d299fc3a8cfc3c0e4d37f12b961148e0432ac4e434 0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch
|
||||
61fdf02497bc5d90bdc1c9b2aa0294bbe1ab4285940dc840d94bda00b0c4dec342df639b11721e5569a6de47e53099928f1f1fb07ddcf3466535e8092b2af9a7 0020-libstdc-futex-add-time64-compatibility.patch
|
||||
b40fb4f96693a7a0cec086c24f17ba5c8c416e67d76d468306b26895033ee326454a2b2d3028077b9f2187c545bff8c99e87d44298c179ccbc1f48f04ccc0889 0021-add-fortify-headers-paths.patch
|
||||
7a7414d44a43260d7098bf24dacea6595fdaf42496ef1d176bb7a254da813c1faaf1ecfa6e1463af34c466f02cf2f8489dbfeae9bbfb070726d27da0330e4c59 0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch
|
||||
7bd3b297a05df00a0c961c407d84c60b7dcf5150919a6ce8e6d5162bb82e5820ae938feec24dad62dca141b4ede302345b6e08e21f06dd9393bec7592a8aecf7 0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch
|
||||
5c61dac5100dce45ad17f45e5e63e3f1e46173639384d7fb3c343e0b6a1e4c0ab39491d397c4445be63cf182f3bb79f7995cc8f89f70a61321dea24bf29cdd18 0024-Pure-64-bit-MIPS.patch
|
||||
be8eee9edfe4e768ea4873b618a3431ae4502e933af343f80b623e38626c0e9187b73debd6773ae8dfbfb514ff0e4a18a5102e5fac4545e5de18f8e226e6b237 0025-use-pure-64-bit-configuration-where-appropriate.patch
|
||||
2a2c89b3dfac37344bc17fbb9471b903cbdf4332c71bb20942587acccf962a42d58d2535cc0d90a0f6cddc8f6db1328c6b9f158aecbff99a92f9fa0e0683c0a7 0026-always-build-libgcc_eh.a.patch
|
||||
739e9d58875c291af82ca9d7509f52679a01704beb4f003e3ace1cd1ae2aede5763243e34c2c73be13bd1dd46539f50d3b7c7a293686b0c6158d3069d377009e 0027-ada-libgnarl-compatibility-for-musl.patch
|
||||
69f330f91a3354753e9283e804f18257c3e7a51f368defe4a704d20c2a00fd6d6cb62f4d7931ca886dd7dffeaf59fa9beaf36c19ebd3d25cdebfefc884d64c02 0028-ada-musl-support-fixes.patch"
|
||||
ee2d344e912ebaddf71d53ff674ca7ea7837ee65f982a8f088339fd05261e441aace6087f7f936d32b502bff7e375094f48cb90562ab7734c57e1750d3fe2029 0001-posix_memalign.patch
|
||||
deaf3ba25614df18b2b9b04244bcc9278c16d98f6fdeac17f7e2c0567be7c2836ab6d21fc9d8f779c672022d25fc278327d6d0d637bc200fadbb8d913ef95581 0002-gcc-poison-system-directories.patch
|
||||
eb80ea94e008e33b97c8c0d47e74d639897a13357abbd130e9bff4ae30349b8f788acbaf4caa61f23022a86841c431b8bb639c536aab548dc735470a7c7ccfcf 0003-Turn-on-Wl-z-relro-z-now-by-default.patch
|
||||
6cbc39dd24f7b4316b6e69940bf7c9f3ae889e8156f9c7dd72c8335e55a2a44d6fade37954296451b588bf8fc065514d4916ad527042b8f9a86d6e0d706e3c9c 0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch
|
||||
e8c75aef864e5852fc78bfd7949232fc58b40a743d7c04a122ee6e021ee99f72edcff6efbf74e0eedc9405faf81d01208867b0571c4dc8cb44b9a03d1d25fbde 0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch
|
||||
d5b3d40e1c4828d16684137487f64bf0b4b892fabc403f975f37d481a22647f923a3524a12714898937abdfbf875411e50b522134535f8d1852f103310aef5a3 0006-Enable-Wformat-and-Wformat-security-by-default.patch
|
||||
e568a17fb3348964c0d21e7d67ffeae4f2f0dfd3f2986aaf9cec86c685c13f0c830dfc019b6bd7fe58b8635e5b8fca7ad992a92210f2be285b8cac6467c33a78 0007-Enable-Wtrampolines-by-default.patch
|
||||
fd47150c72138d47a9faafe8586e84456e09a4ca0ed1ba9be7b5b2a351b1ca2d17b238beaa42c88888402d181933ff68cef0a91f0c3bd26d374706cf71726bbd 0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch
|
||||
820be83d93ff5b8d8fc69cdeccec0c6ac2544ee6cce43ae35e6829222791733a1c0b2232fb5a7ad93ab9e6cd677f077d01a4f9dec7aa9c38b013f74aa6c74fc3 0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch
|
||||
5be4c0ad27e3b86c06dcaefe34ee1271cb53ded3de9802bc1a8571497240ca870e22534f77adb52dc4556eb4861b94a6c9a39cf6a2e84ef62ee88a04a4a01868 0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch
|
||||
5024309e549b7e4a94f2af8bd727144bd27cf8b7cdcbb537a30f3dac28543697c214438da7af491e43cb90daac46344b7b0466729d5c4209ca8a3a0d5a7d027c 0011-libiberty-copy-PIC-objects-during-build-process.patch
|
||||
c0ebc205f6598edbe6d68b8a287c36ef80826b864e5b92b37f64e7a21ab7048cae67dd5650cd3d1399beb890753ad96e898a94c52d13b3ca7b266a15fed043ca 0012-libitm-disable-FORTIFY.patch
|
||||
4a4fae02231f49142ab90d4f3dcd093c13032781ff1659f6aca62da13f8c676e2ec9dcdd2e7959ec62835e13c515be9bd7a2e35d3c06768d44d9e1185cb40dac 0013-libgcc_s.patch
|
||||
9c513a30146364ecd899ca26a27019ea1ba353e8e409e0becb50d2a051022b701586b9276a4f118dbdd131c4882a04cad4188219bb10aa36d7b0bbe2eb2ceb03 0014-nopie.patch
|
||||
aec141251c3abae35b4dc3ecd3778e332fa5596282fea1fd08c8d5350d8a8740568910236ce8d38c5662232fa5412313cb0a1c7a46c79a5b5e2c643871bf643b 0015-libffi-use-__linux__-instead-of-__gnu_linux__-for-mu.patch
|
||||
d3fc4ea6918b4c4ce57eb45437f88ec3982bd5c8e17d282003e195dc705e0c84996ec140151b2b2371917595d2d62f30a2cb4676150c1bc8b8fd3b8fb85ecbe9 0016-dlang-update-zlib-binding.patch
|
||||
4ebf845f41c7a8ba5bfa624c8e1527eb0f15a48d6a8bd151435037bd4b9d71f955ac9b60ab453c0315d592e92f194be92b9c3fca40ed533d64c0a1995c3ad4be 0017-dlang-fix-fcntl-on-mips-add-libucontext-dep.patch
|
||||
2ca085382a03d269a2f48ec49601328cec7c53eb69856ee55aea11610293c206e8881043030d2295f49a08a5897c9eb9a6126a5ae65edbd967e17e34dadfb2d8 0018-ada-fix-shared-linking.patch
|
||||
307a1ac2a6cea20c900b7bef2d5d7ad98c2b8cc45bdb2a6adbf151f3228d5de2670c75ddf48e4d3c9ceb7ed42852e24be534773551bc050ad10005faaee2600c 0019-build-fix-CXXFLAGS_FOR_BUILD-passing.patch
|
||||
d01d0031d97fa42363bd3fb0c0dda9b26e7f06660294f0ceec55624f6564f2ce372b9a255683c67d79dfa18fb8551416c04766debc2e1b9c587ef381eef64f0b 0020-libstdc-futex-add-time64-compatibility.patch
|
||||
e9eb5ff439cff4a22abaa7b9e27a176b51e1e1f4361fd829bd26e4b5ffc0e4583b1d6728b1510991b069b42f0aae8a2e698f85edecb1d792e4c7e10079507de8 0021-add-fortify-headers-paths.patch
|
||||
beb7aa26a3731855be2521495186af52d4764973f2bc1ad44554332e867fe52fa37bcb5747395e44ae0011413e702054a60a754ad81dd88bbf97e3c7c718f356 0022-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch
|
||||
ac3288b7840e5cf2500608773f40e604798b30fcb885c9fec7ba0bcc4bcfd374211faa26e82fcf4669bf624d5ccb0bdc747897759be77af3621b8b3bb08bff85 0023-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch
|
||||
7e953227e0d3f1105a754f3fdefbaaca0b106d337c5bcc9b6394712d7f47173f96906517030b508d5a57611cc637848f2e59aec92313b39f1e2221bd98729826 0024-Pure-64-bit-MIPS.patch
|
||||
12eaad6a8781e76f38bc4ba5c8cd09cfe0a0b95c0cde83fe58dc10bdec542fe43389f2c84bd313629c45af8ed3ffd46cc4478f5a4152ea1eb8d4b8276ede499c 0025-use-pure-64-bit-configuration-where-appropriate.patch
|
||||
73a649ac371f4a5da68c5f0b88010080efd7deaee29765ef7a299fd1654b5ccdbfee88c59e5d37ae55e37cf6fa218d989e411c04b17e0fd94268ed65d7dcd4bf 0026-always-build-libgcc_eh.a.patch
|
||||
59d9e0a5f39ad68b8bb1365f7c97a54ca4751cdad01ead8184fd897d8a13156145976a8b5b9856be154c053d6ba11eaad1e5662e7ddda9ba6d2811340df61cba 0027-ada-libgnarl-compatibility-for-musl.patch
|
||||
8207323c530929517c799b24b1a7ba39c07bbb0e6770f878f1d66088ae16667e7706c9402ac04fe5eb6447a6ad12b548cc7e7612c5b217cd24e7d00094d2a28f 0028-ada-musl-support-fixes.patch
|
||||
b90f7ad074b6183a4afc6be65349b8bf94b78d1c259d5be9877c16e3de95222fb6905cba7eb6ee4fe1e564ed20bf183c6815bd087896b6b0376656a841736fc1 0029-c-Fix-bogus-vector-initialisation-error-PR96377.patch
|
||||
39a66708fb7ab4a72e1973749e32c22484e8e6c0afde6a59a645f2536c71cea86c8de2f0448621d53888293121344e84a24617400fae849282df57e0f5ddc21d 0030-rs6000-ICE-when-using-an-MMA-type-as-a-function-para.patch"
|
||||
|
|
Loading…
Reference in a new issue