aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.h
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2020-05-14 09:48:32 +0200
committerJakub Jelinek <jakub@redhat.com>2020-05-14 09:48:32 +0200
commit49ddde69fc8e1e4c48d4b0027ea37ac862da0f1f (patch)
tree5cb3ecbf1dbf9cc8e8e3b975b3f83a959e3353de /gcc/function.h
parent42ef8a5e662a765dc794a7a5c0227bcd83556e44 (diff)
downloadgcc-49ddde69fc8e1e4c48d4b0027ea37ac862da0f1f.zip
gcc-49ddde69fc8e1e4c48d4b0027ea37ac862da0f1f.tar.gz
gcc-49ddde69fc8e1e4c48d4b0027ea37ac862da0f1f.tar.bz2
openmp: Also implicitly mark as declare target to functions mentioned in target regions
OpenMP 5.0 also specifies that functions referenced from target regions (except for target regions with device(ancestor:)) are also implicitly declare target to. This patch implements that. 2020-05-14 Jakub Jelinek <jakub@redhat.com> * function.h (struct function): Add has_omp_target bit. * omp-offload.c (omp_discover_declare_target_fn_r): New function, old renamed to ... (omp_discover_declare_target_tgt_fn_r): ... this. (omp_discover_declare_target_var_r): Call omp_discover_declare_target_tgt_fn_r instead of omp_discover_declare_target_fn_r. (omp_discover_implicit_declare_target): Also queue functions with has_omp_target bit set, for those walk with omp_discover_declare_target_fn_r, for declare target to functions walk with omp_discover_declare_target_tgt_fn_r. gcc/c/ * c-parser.c (c_parser_omp_target): Set cfun->has_omp_target. gcc/cp/ * cp-gimplify.c (cp_genericize_r): Set cfun->has_omp_target. gcc/fortran/ * trans-openmp.c: Include function.h. (gfc_trans_omp_target): Set cfun->has_omp_target. libgomp/ * testsuite/libgomp.c-c++-common/target-40.c: New test.
Diffstat (limited to 'gcc/function.h')
-rw-r--r--gcc/function.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/function.h b/gcc/function.h
index 1ee8ed3..d55cbdd 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -421,6 +421,9 @@ struct GTY(()) function {
/* Set if this is a coroutine-related function. */
unsigned int coroutine_component : 1;
+
+ /* Set if there are any OMP_TARGET regions in the function. */
+ unsigned int has_omp_target : 1;
};
/* Add the decl D to the local_decls list of FUN. */