This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[og7] Fix libgomp.oacc-c/asyncwait-2.c
- From: Cesar Philippidis <cesar at codesourcery dot com>
- To: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 1 Aug 2017 08:50:42 -0700
- Subject: [og7] Fix libgomp.oacc-c/asyncwait-2.c
- Authentication-results: sourceware.org; auth=none
I pushed this patch to openacc-gcc-7-branch that fixes an ICE in
libgomp.oacc-c/asyncwait-2.c caused by the recent async backport from
gomp-4_0-branch. Before, expand_omp_target was expecting the wait clause
argument to be a constant value. This patch teaches that function to be
more flexible and allow variables.
Cesar
2017-08-01 Cesar Philippidis <cesar@codesourcery.com>
Thomas Schwinge <thomas@codesourcery.com>
gcc/
* omp-expand.c (expand_omp_target): Don't expect OMP_CLAUSE_WAIT_EXPR
to be a constant expression.
diff --git a/gcc/omp-expand.c b/gcc/omp-expand.c
index 8301dcb0de5..bf1f127d8d6 100644
--- a/gcc/omp-expand.c
+++ b/gcc/omp-expand.c
@@ -7574,15 +7574,17 @@ expand_omp_target (struct omp_region *region)
for (; c; c = OMP_CLAUSE_CHAIN (c))
if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_WAIT)
{
- if (tree_int_cst_compare (OMP_CLAUSE_WAIT_EXPR (c), noval) == 0)
+ tree wait_expr = OMP_CLAUSE_WAIT_EXPR (c);
+
+ if (TREE_CODE (wait_expr) == INTEGER_CST
+ && tree_int_cst_compare (wait_expr, noval) == 0)
{
noval_seen = true;
continue;
}
args.safe_push (fold_convert_loc (OMP_CLAUSE_LOCATION (c),
- integer_type_node,
- OMP_CLAUSE_WAIT_EXPR (c)));
+ integer_type_node, wait_expr));
num_waits++;
}