From 024485073448e1b02d8bf0c652e3b8e196b9fefb Mon Sep 17 00:00:00 2001 From: Kwok Cheung Yeung Date: Fri, 13 May 2022 16:46:36 +0100 Subject: [PATCH] Fix ICE in nested-function-1.c testcase The ICE occurs during Gimple verification after the ompexp stage because one of the arguments to the generated builtin call is of a Gimple reg type, but isn't a Gimple value (because it is marked addressable). This appears to be fallout from the commit "OpenACC 'kernels' decomposition: Mark variables used in synthesized data clauses as addressable [PR100280]". The launch dimensions have been added to the arguments of a builtin call by oacc_set_fn_attrib, but one of the dimensions has been marked addressable. Fixed by forcing the added arguments to be re-gimplified. 2022-05-13 Kwok Cheung Yeung gcc/ * omp-expand.cc (expand_omp_target): Gimplify launch dimensions used in function call. --- gcc/ChangeLog.omp | 5 +++++ gcc/omp-expand.cc | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp index 1a9d3c507b55..29740139fd2a 100644 --- a/gcc/ChangeLog.omp +++ b/gcc/ChangeLog.omp @@ -1,3 +1,8 @@ +2022-05-13 Kwok Cheung Yeung + + * omp-expand.cc (expand_omp_target): Gimplify launch dimensions used + in function call. + 2022-04-14 Kwok Cheung Yeung * graphite-oacc.cc (find_oacc_tail_marks): Check that data_dep is diff --git a/gcc/omp-expand.cc b/gcc/omp-expand.cc index 1c512b385e86..f228210cc601 100644 --- a/gcc/omp-expand.cc +++ b/gcc/omp-expand.cc @@ -10274,7 +10274,15 @@ expand_omp_target (struct omp_region *region) oacc_replace_fn_attrib (child_fn, dims); } else - oacc_set_fn_attrib (child_fn, clauses, &args); + { + unsigned int args_before = args.length (); + + oacc_set_fn_attrib (child_fn, clauses, &args); + for (unsigned int ix = args_before; ix < args.length (); ix++) + args[ix] = force_gimple_operand_gsi (&gsi, args[ix], true, + NULL_TREE, true, + GSI_SAME_STMT); + } tagging = true; /* FALLTHRU */ case BUILT_IN_GOACC_ENTER_DATA: -- 2.47.2