openmp: Implicitly add 'declare target' directives for dynamic initializers in C++
2020-12-18 Kwok Cheung Yeung <kcy@codesourcery.com> gcc/ * langhooks-def.h (lhd_get_decl_init): New. (lhd_finish_decl_inits): New. (LANG_HOOKS_GET_DECL_INIT): New. (LANG_HOOKS_OMP_FINISH_DECL_INITS): New. (LANG_HOOKS_DECLS): Add LANG_HOOKS_GET_DECL_INIT and LANG_HOOKS_OMP_FINISH_DECL_INITS. * langhooks.c (lhd_omp_get_decl_init): New. (lhd_omp_finish_decl_inits): New. * langhooks.h (struct lang_hooks_for_decls): Add omp_get_decl_init and omp_finish_decl_inits. * omp-offload.c (omp_discover_declare_target_var_r): Use get_decl_init langhook in place of DECL_INITIAL. Call omp_finish_decl_inits langhook at end of function. gcc/cp/ * cp-lang.c (cxx_get_decl_init): New. (cxx_omp_finish_decl_inits): New. (LANG_HOOKS_GET_DECL_INIT): New. (LANG_HOOKS_OMP_FINISH_DECL_INITS): New. * cp-tree.h (dynamic_initializers): New. * decl.c (dynamic_initializers): New. * decl2.c (c_parse_final_cleanups): Add initializer entries from vars to dynamic_initializers. gcc/testsuite/ * g++.dg/gomp/declare-target-3.C: New.
Showing
- gcc/cp/cp-lang.c 32 additions, 0 deletionsgcc/cp/cp-lang.c
- gcc/cp/cp-tree.h 4 additions, 0 deletionsgcc/cp/cp-tree.h
- gcc/cp/decl.c 4 additions, 0 deletionsgcc/cp/decl.c
- gcc/cp/decl2.c 7 additions, 0 deletionsgcc/cp/decl2.c
- gcc/langhooks-def.h 7 additions, 1 deletiongcc/langhooks-def.h
- gcc/langhooks.c 16 additions, 0 deletionsgcc/langhooks.c
- gcc/langhooks.h 10 additions, 0 deletionsgcc/langhooks.h
- gcc/omp-offload.c 7 additions, 4 deletionsgcc/omp-offload.c
- gcc/testsuite/g++.dg/gomp/declare-target-3.C 31 additions, 0 deletionsgcc/testsuite/g++.dg/gomp/declare-target-3.C
Loading
Please register or sign in to comment