From: Jakub Jelinek Date: Tue, 30 May 2017 08:17:54 +0000 (+0200) Subject: backport: re PR c++/80141 (ICE with pragma omp declare) X-Git-Tag: releases/gcc-5.5.0~250 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac9fcfb72b38b307b5f0d5bf3c88cb56309ddfe6;p=thirdparty%2Fgcc.git backport: re PR c++/80141 (ICE with pragma omp declare) Backported from mainline 2017-03-22 Jakub Jelinek PR c++/80141 * semantics.c (finish_omp_clause) : Call maybe_constant_value only when not processing_template_decl. * g++.dg/gomp/pr80141.C: New test. From-SVN: r248663 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4f07104c040d..d867b9c5f9fa 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,6 +1,13 @@ 2017-05-30 Jakub Jelinek Backported from mainline + 2017-03-22 Jakub Jelinek + + PR c++/80141 + * semantics.c (finish_omp_clause) : Call maybe_constant_value only when not + processing_template_decl. + 2017-03-10 Jakub Jelinek PR c++/79896 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 6705d1f97c9a..a4fd77ec6616 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -5546,9 +5546,9 @@ finish_omp_clauses (tree clauses) else { t = mark_rvalue_use (t); - t = maybe_constant_value (t); if (!processing_template_decl) { + t = maybe_constant_value (t); if (TREE_CODE (t) != INTEGER_CST || tree_int_cst_sgn (t) != 1) { @@ -5726,9 +5726,9 @@ finish_omp_clauses (tree clauses) else { t = mark_rvalue_use (t); - t = maybe_constant_value (t); if (!processing_template_decl) { + t = maybe_constant_value (t); if (TREE_CODE (t) != INTEGER_CST || tree_int_cst_sgn (t) != 1) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 895f61037d20..d1080804767c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,9 @@ Backported from mainline 2017-03-22 Jakub Jelinek + PR c++/80141 + * g++.dg/gomp/pr80141.C: New test. + PR c++/80129 * g++.dg/torture/pr80129.C: New test. diff --git a/gcc/testsuite/g++.dg/gomp/pr80141.C b/gcc/testsuite/g++.dg/gomp/pr80141.C new file mode 100644 index 000000000000..53e497ab3499 --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr80141.C @@ -0,0 +1,8 @@ +// PR c++/80141 +// { dg-do compile } + +#pragma omp declare simd aligned (p : 2 && 2) +template void foo (int *p); + +#pragma omp declare simd simdlen (2 && 2) +template void bar (int *p);