diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2019-11-19 22:55:04 +0000 |
---|---|---|
committer | Sergei Trofimovich <slyfox@gentoo.org> | 2019-11-19 22:55:04 +0000 |
commit | e9c37fb661aed82754e6fd374457a88d697e3091 (patch) | |
tree | cb9c93002d046dc0ceda98c1f772264da5b6ed28 /9.2.0 | |
parent | 7.5.0: patchset 1 based on 7.4.0 patchset (diff) | |
download | gcc-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.patch | 62 | ||||
-rw-r--r-- | 9.2.0/gentoo/README.history | 3 |
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 |