aboutsummaryrefslogtreecommitdiff
path: root/9.2.0
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2019-11-19 22:55:04 +0000
committerSergei Trofimovich <slyfox@gentoo.org>2019-11-19 22:55:04 +0000
commite9c37fb661aed82754e6fd374457a88d697e3091 (patch)
treecb9c93002d046dc0ceda98c1f772264da5b6ed28 /9.2.0
parent7.5.0: patchset 1 based on 7.4.0 patchset (diff)
downloadgcc-patches-e9c37fb661aed82754e6fd374457a88d697e3091.tar.gz
gcc-patches-e9c37fb661aed82754e6fd374457a88d697e3091.tar.bz2
gcc-patches-e9c37fb661aed82754e6fd374457a88d697e3091.zip
9.2.0: backport openmp for loop SIGSEGV fix
Reported-by: Marc Vinyals Bug: https://gcc.gnu.org/PR92504 Bug: https://bugs.gentoo.org/699938 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Diffstat (limited to '9.2.0')
-rw-r--r--9.2.0/gentoo/31_all_openmp-for-SEGV.patch62
-rw-r--r--9.2.0/gentoo/README.history3
2 files changed, 65 insertions, 0 deletions
diff --git a/9.2.0/gentoo/31_all_openmp-for-SEGV.patch b/9.2.0/gentoo/31_all_openmp-for-SEGV.patch
new file mode 100644
index 0000000..a9399ca
--- /dev/null
+++ b/9.2.0/gentoo/31_all_openmp-for-SEGV.patch
@@ -0,0 +1,62 @@
+https://gcc.gnu.org/PR92504
+https://bugs.gentoo.org/699938
+
+From 5bf4317d82f5cb4c7360e6c9e5cbe8fa577583a3 Mon Sep 17 00:00:00 2001
+From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Tue, 19 Nov 2019 08:52:31 +0000
+Subject: [PATCH] PR c++/92504 * semantics.c
+ (handle_omp_for_class_iterator): Don't call cp_fully_fold on cond.
+
+ * g++.dg/gomp/pr92504.C: New test.
+
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@278433 138bc75d-0d04-0410-961f-82ee72b054a4
+---
+ gcc/cp/semantics.c | 1 -
+ gcc/testsuite/g++.dg/gomp/pr92504.C | 29 +++++++++++++++++++++++++++++
+
+--- a/gcc/cp/semantics.c
++++ b/gcc/cp/semantics.c
+@@ -8434,7 +8434,6 @@ handle_omp_for_class_iterator (int i, location_t locus, enum tree_code code,
+ if (init && EXPR_HAS_LOCATION (init))
+ elocus = EXPR_LOCATION (init);
+
+- cond = cp_fully_fold (cond);
+ switch (TREE_CODE (cond))
+ {
+ case GT_EXPR:
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/gomp/pr92504.C
+@@ -0,0 +1,29 @@
++// PR c++/92504
++// { dg-do compile { target c++11 } }
++// { dg-additional-options "-O2" }
++
++namespace std {
++ typedef __SIZE_TYPE__ size_t;
++ typedef __PTRDIFF_TYPE__ ptrdiff_t;
++}
++
++struct A {
++ A ();
++ A (const A &);
++ A & operator++ ();
++ bool operator != (const A &) const;
++ std::ptrdiff_t operator - (const A &);
++ A & operator += (std::size_t);
++ int a;
++ A & begin ();
++ A & end (); // { dg-message "declared here" }
++};
++
++void
++bar ()
++{
++ A a;
++ #pragma omp for
++ for (auto b = a; b != a.end; ++b) // { dg-error "invalid use of non-static member function" }
++ ;
++}
+--
+2.24.0
+
diff --git a/9.2.0/gentoo/README.history b/9.2.0/gentoo/README.history
index 4f182e3..09ae269 100644
--- a/9.2.0/gentoo/README.history
+++ b/9.2.0/gentoo/README.history
@@ -1,3 +1,6 @@
+4 TODO
+ + 31_all_openmp-for-SEGV.patch
+
3 04 Nov 2019
+ 30_all_arm64-march-native.patch
- 27_all_sparc-PIC-constant-PR91472.patch