From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7845) id 844F23858418; Tue, 1 Nov 2022 13:11:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 844F23858418 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1667308263; bh=rmTMk/1vJMsWq1qGh/FaubtNkRB5lrz6t1CYfd2fIro=; h=From:To:Subject:Date:From; b=e8TL6EoDPugD7Q77rCK9Vk92z3XH8j8Y3c+PUWHfGAw63KOcozkI4qlCvqQOEcIsf 0thSiPcEGZAySuJg6A7s7ekliYX2FPmTvwf3LQe7KmuE8eBEZMe1rzlvDKzf/XK/1y 88oijGpjpboCJp5TdS4EdsDWqctmR5ey3mbJvBgA= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Marcel Vollweiler To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/omp/gcc-12] openmp: Bugfix in omp_expand_metadirective for same blocks/edges to be deleted. X-Act-Checkin: gcc X-Git-Author: Marcel Vollweiler X-Git-Refname: refs/heads/devel/omp/gcc-12 X-Git-Oldrev: d8f1377233fcacd2034e6c59a8745c54c7656d32 X-Git-Newrev: dc2304b3ce7e96094d50fe48bf790be6b4d6f02e Message-Id: <20221101131103.844F23858418@sourceware.org> Date: Tue, 1 Nov 2022 13:11:03 +0000 (GMT) List-Id: https://gcc.gnu.org/g:dc2304b3ce7e96094d50fe48bf790be6b4d6f02e commit dc2304b3ce7e96094d50fe48bf790be6b4d6f02e Author: Marcel Vollweiler Date: Tue Nov 1 13:05:18 2022 +0000 openmp: Bugfix in omp_expand_metadirective for same blocks/edges to be deleted. This patch handles an ICE that is thrown in omp_expand_metadirective when a basic_block for a metadirective label is tried to be deleted multiple times. To avoid this situation, processed labels are added to the already existing list of labels that are not intended to be deleted. The issue occured in the attached test case. gcc/ChangeLog: * omp-expand-metadirective.cc (omp_expand_metadirective): Add already processed labels to "labels" (the list of labels not to be deleted). gcc/testsuite/ChangeLog: * c-c++-common/gomp/metadirective-8.c: New test. Diff: --- gcc/ChangeLog.omp | 5 +++++ gcc/omp-expand-metadirective.cc | 1 + gcc/testsuite/ChangeLog.omp | 4 ++++ gcc/testsuite/c-c++-common/gomp/metadirective-8.c | 16 ++++++++++++++++ 4 files changed, 26 insertions(+) diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp index f8d5af30ca5..b636fa5baf4 100644 --- a/gcc/ChangeLog.omp +++ b/gcc/ChangeLog.omp @@ -1,3 +1,8 @@ +2022-11-01 Marcel Vollweiler + + * omp-expand-metadirective.cc (omp_expand_metadirective): Add already + processed labels to "labels" (the list of labels not to be deleted). + 2022-11-01 Andrew Stubbs Backport from mainline: diff --git a/gcc/omp-expand-metadirective.cc b/gcc/omp-expand-metadirective.cc index aaf048a699a..0e885e98592 100644 --- a/gcc/omp-expand-metadirective.cc +++ b/gcc/omp-expand-metadirective.cc @@ -65,6 +65,7 @@ omp_expand_metadirective (function *fun, basic_block bb) { edge e = find_edge (bb, label_to_block (fun, label)); remove_edge_and_dominated_blocks (e); + labels.safe_push (label); } } diff --git a/gcc/testsuite/ChangeLog.omp b/gcc/testsuite/ChangeLog.omp index ef76bf2bbb3..3ae28694624 100644 --- a/gcc/testsuite/ChangeLog.omp +++ b/gcc/testsuite/ChangeLog.omp @@ -1,3 +1,7 @@ +2022-11-01 Marcel Vollweiler + + * c-c++-common/gomp/metadirective-8.c: New test. + 2022-10-28 Tobias Burnus Backport from mainline: diff --git a/gcc/testsuite/c-c++-common/gomp/metadirective-8.c b/gcc/testsuite/c-c++-common/gomp/metadirective-8.c new file mode 100644 index 00000000000..c7d9c31ed73 --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/metadirective-8.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ + +#define N 256 + +void f () +{ + int i; + int a[N]; + + #pragma omp metadirective \ + when( device={kind(nohost)}: nothing ) \ + when( device={arch("nvptx")}: nothing) \ + default( parallel for) + for (i = 0; i < N; i++) + a[i] = i; +}