From 21803fcaebeab36de0d7b6b8cf6abb9389f5e51f Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 20 May 2021 15:44:09 +0200 Subject: [PATCH] [OpenACC privatization] Explain two different configurations [PR90115] gcc/ PR middle-end/90115 * omp-offload.c (execute_oacc_device_lower): Explain. --- gcc/omp-offload.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gcc/omp-offload.c b/gcc/omp-offload.c index 36bd2e44d81..336b48d5a3b 100644 --- a/gcc/omp-offload.c +++ b/gcc/omp-offload.c @@ -2206,6 +2206,26 @@ execute_oacc_device_lower () gsi_next (&gsi); } + /* Regarding the OpenACC privatization level, we're currently only looking at + making the gang-private level work. Regarding that, we have the following + configurations: + + - GCN offloading: 'targetm.goacc.adjust_private_decl' does the work (in + particular, change 'TREE_TYPE', etc.) and there is no + 'targetm.goacc.expand_var_decl'. + + - nvptx offloading: 'targetm.goacc.adjust_private_decl' only sets a + marker and then 'targetm.goacc.expand_var_decl' does the work. + + Eventually (in particular, for worker-private level?), both + 'targetm.goacc.adjust_private_decl' and 'targetm.goacc.expand_var_decl' + may need to do things, but that's currently not meant to be addressed, and + thus not fully worked out and implemented, and thus untested. Hence, + 'assert' what currently is implemented/tested, only. */ + + if (targetm.goacc.expand_var_decl) + gcc_assert (adjusted_vars.is_empty ()); + /* Make adjustments to gang-private local variables if required by the target, e.g. forcing them into a particular address space. Afterwards, ADDR_EXPR nodes which have adjusted variables as their argument need to