11.0.0-0.8

This commit is contained in:
Jakub Jelinek 2020-12-16 17:24:23 +01:00
parent 42f8421576
commit f285645769
2 changed files with 158 additions and 3 deletions

View File

@ -1,5 +1,5 @@
%global DATE 20201204
%global gitrev d35391d824edee33b5fbce3df058f4fafd9b9fa6
%global DATE 20201216
%global gitrev ada196afb999077a634220ace175f349418e3078
%global gcc_version 11.0.0
%global gcc_major 11
# Note, gcc_release must be integer, if you want to add suffixes to
@ -119,7 +119,7 @@
Summary: Various compilers (C, C++, Objective-C, ...)
Name: gcc
Version: %{gcc_version}
Release: %{gcc_release}.7%{?dist}
Release: %{gcc_release}.8%{?dist}
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
# GCC Runtime Exception.
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
@ -272,6 +272,7 @@ Patch8: gcc11-foffload-default.patch
Patch9: gcc11-Wno-format-security.patch
Patch10: gcc11-rh1574936.patch
Patch11: gcc11-d-shared-libphobos.patch
Patch12: gcc11-pr98282.patch
# On ARM EABI systems, we do want -gnueabi to be part of the
# target triple.
@ -783,6 +784,7 @@ to NVidia PTX capable devices if available.
%patch10 -p0 -b .rh1574936~
%endif
%patch11 -p0 -b .d-shared-libphobos~
%patch12 -p0 -b .pr98282~
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
@ -2403,6 +2405,7 @@ end
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cc1plus
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/g++-mapper-server
%ifarch sparcv9 ppc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.so
@ -3066,6 +3069,40 @@ end
%endif
%changelog
* Wed Dec 17 2020 Jakub Jelinek <jakub@redhat.com> 11.0.0-0.8
- update from trunk
- PRs ada/98230, bootstrap/98188, c++/57111, c++/59238, c++/68451,
c++/78173, c++/91506, c++/93083, c++/96299, c++/97093, c++/97517,
c++/98043, c++/98103, c++/98122, c++/98126, c++/98130, c++/98187,
c++/98193, c/97981, c/98200, d/98277, fortran/90207, fortran/98016,
fortran/98022, gcov-profile/98273, libstdc++/98108, libstdc++/98226,
lto/98275, middle-end/94600, middle-end/98160, middle-end/98166,
middle-end/98183, middle-end/98190, middle-end/98205,
middle-end/98264, rtl-optimization/97092, rtl-optimization/97421,
rtl-optimization/98212, rtl-optimization/98229, sanitizer/98204,
target/58901, target/66791, target/92469, target/94440, target/95294,
target/96226, target/96470, target/97865, target/97872, target/98100,
target/98147, target/98152, target/98161, target/98162, target/98219,
target/98274, testsuite/95900, testsuite/98123, testsuite/98156,
testsuite/98239, testsuite/98240, testsuite/98242, testsuite/98244,
tree-optimization/95582, tree-optimization/96094,
tree-optimization/96232, tree-optimization/96272,
tree-optimization/96344, tree-optimization/96685,
tree-optimization/97559, tree-optimization/97929,
tree-optimization/98069, tree-optimization/98113,
tree-optimization/98117, tree-optimization/98137,
tree-optimization/98169, tree-optimization/98174,
tree-optimization/98180, tree-optimization/98182,
tree-optimization/98191, tree-optimization/98192,
tree-optimization/98199, tree-optimization/98211,
tree-optimization/98213, tree-optimization/98235,
tree-optimization/98256
- C++20 modules support
- fix up __patchable_function_entries handling when gcc is configured
against recent binutils (#1907945)
- fix up handling of non-memory VIEW_CONVERT_EXPRs in PRE
(PR tree-optimization/98282)
* Fri Dec 4 2020 Jakub Jelinek <jakub@redhat.com> 11.0.0-0.7
- update from trunk
- PRs bootstrap/97983, c++/80780, c++/90629, c++/93093, c++/97187,

118
gcc11-pr98282.patch Normal file
View File

@ -0,0 +1,118 @@
2020-12-15 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/98282
* tree-ssa-pre.c (compute_avail): Don't try to adjust alias set
if different when ref1->opcode is not MEM_REF or TARGET_MEM_REF.
* g++.dg/opt/pr98282.C: New test.
--- gcc/tree-ssa-pre.c.jj 2020-11-30 10:48:31.000000000 +0100
+++ gcc/tree-ssa-pre.c 2020-12-15 10:51:51.061206572 +0100
@@ -4176,13 +4176,17 @@ compute_avail (void)
&& ref2->opcode != MEM_REF
&& ref2 != &operands[0])
--ref2;
- if ((ref1->opcode == TARGET_MEM_REF
- || ref1->opcode == MEM_REF)
- && (TYPE_ALIGN (ref1->type)
- > TYPE_ALIGN (ref2->type)))
- ref1->type
- = build_aligned_type (ref1->type,
- TYPE_ALIGN (ref2->type));
+ if (ref1->opcode == TARGET_MEM_REF
+ || ref1->opcode == MEM_REF)
+ {
+ if (TYPE_ALIGN (ref1->type)
+ > TYPE_ALIGN (ref2->type))
+ ref1->type
+ = build_aligned_type (ref1->type,
+ TYPE_ALIGN (ref2->type));
+ }
+ else
+ set = ref->set;
/* TBAA behavior is an obvious part so make sure
that the hashtable one covers this as well
by adjusting the ref alias set and its base. */
--- gcc/testsuite/g++.dg/opt/pr98282.C.jj 2020-12-15 12:26:25.868415230 +0100
+++ gcc/testsuite/g++.dg/opt/pr98282.C 2020-12-15 12:28:00.346353067 +0100
@@ -0,0 +1,80 @@
+// PR tree-optimization/98282
+// { dg-do compile { target c++11 } }
+// { dg-options "-O2" }
+
+template <typename> struct g;
+template <typename b> struct g<b &> { typedef b c; };
+template <typename b> typename g<b>::c &&d(b &&e) {
+ return static_cast<typename g<b>::c &&>(e);
+}
+void *operator new(__SIZE_TYPE__, void *f) { return f; }
+struct h;
+struct k {
+ using i = h *;
+};
+struct D {
+ k::i j;
+};
+struct p : D {
+ p(p &&) : D() {}
+};
+struct r {
+ using l = int;
+ r(r &&) : ad() {}
+ l *ad;
+};
+struct s {
+ static s m();
+};
+struct t {
+ template <typename ah> void operator=(ah);
+};
+struct I {
+ template <typename o> void q(o ai) {
+ *ai = aj();
+ s::m();
+ }
+ h aj();
+};
+template <typename...> class as;
+struct J {
+ int a;
+ char av;
+};
+template <typename...> struct aw : J {
+ void ax(...) {}
+};
+template <typename... ay, typename an, typename... n>
+struct aw<as<ay...>, an, n...> : aw<as<ay...>, n...> {
+ using az = as<ay...>;
+ using ba = aw<az, n...>;
+ char bb;
+ an &bc() { return *reinterpret_cast<an *>(this); }
+ void ax(az *bd) {
+ if (bb)
+ new (bd) an(d(bc()));
+ ba::ax(bd);
+ }
+};
+template <typename... n> struct as : aw<as<n...>, n...> {
+ as();
+ as(as &&be) { be.ax(this); }
+ void operator=(as be) { be.ax(this); }
+};
+struct h {
+ as<decltype(nullptr), r, p> bg;
+};
+using bh = t;
+struct u {
+ bh bj;
+};
+I bk();
+template <typename> void bl() {
+ h a;
+ bk().q(&a);
+}
+template <typename> void bn(int) {
+ u b;
+ b.bj = bl<int>;
+}
+void bp() { bn<int>(0); }