From: Hafiz Abid Qadeer Date: Wed, 9 Mar 2022 21:40:45 +0000 (+0000) Subject: Fix an ICE with allocate directive. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a03a01959576337cb0cac35de6915cc2b5d9a36c;p=thirdparty%2Fgcc.git Fix an ICE with allocate directive. Add case for OMP_CLAUSE_ALLOCATOR in walk_tree_1. This helps fix an ICE which occurs only on OG11 with allocate directive. Please note that this change is not needed on master. The code there handles all clauses in the same way so a special case for OMP_CLAUSE_ALLOCATOR is not required. gcc/ * tree.c (walk_tree_1): Add case for OMP_CLAUSE_ALLOCATOR. --- diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp index c6c60c23480e..46143dda9c3f 100644 --- a/gcc/ChangeLog.omp +++ b/gcc/ChangeLog.omp @@ -1,3 +1,7 @@ +2022-03-10 Abid Qadeer + + * tree.c (walk_tree_1): Add case for OMP_CLAUSE_ALLOCATOR. + 2022-03-09 Abid Qadeer Backport of a patch posted at diff --git a/gcc/tree.c b/gcc/tree.c index 26830f47aa1b..1b99620bfcbd 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -12359,6 +12359,16 @@ walk_tree_1 (tree *tp, walk_tree_fn func, void *data, WALK_SUBTREE_TAIL (OMP_CLAUSE_CHAIN (*tp)); } + /* This hunk is only needed on og11 as master uses same code + for all clauses. */ + case OMP_CLAUSE_ALLOCATOR: + { + int len = omp_clause_num_ops[OMP_CLAUSE_CODE (*tp)]; + for (int i = 0; i < len; i++) + WALK_SUBTREE (OMP_CLAUSE_OPERAND (*tp, i)); + WALK_SUBTREE_TAIL (OMP_CLAUSE_CHAIN (*tp)); + } + default: gcc_unreachable (); }