commit:     e9c37fb661aed82754e6fd374457a88d697e3091
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 19 22:55:04 2019 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Tue Nov 19 22:55:04 2019 +0000
URL:        https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=e9c37fb6

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 <AT> gentoo.org>

 9.2.0/gentoo/31_all_openmp-for-SEGV.patch | 62 +++++++++++++++++++++++++++++++
 9.2.0/gentoo/README.history               |  3 ++
 2 files changed, 65 insertions(+)

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

Reply via email to