diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2015-01-19 13:03:35 +0100 |
---|---|---|
committer | Thomas Schwinge <tschwinge@gcc.gnu.org> | 2015-01-19 13:03:35 +0100 |
commit | 128b26dceb824d7760c2100cd6845c72be5a1422 (patch) | |
tree | 0dedf360229e98ec8dd3a80062bd72e0cad0cde5 /gcc | |
parent | 3d36be01e4f9bd4d99750d93f44ef7d8f3a3cc4e (diff) | |
download | gcc-128b26dceb824d7760c2100cd6845c72be5a1422.zip gcc-128b26dceb824d7760c2100cd6845c72be5a1422.tar.gz gcc-128b26dceb824d7760c2100cd6845c72be5a1422.tar.bz2 |
[PR libgomp/64625] Remove __OFFLOAD_TABLE__ variable/formal parameter.
gcc/
* omp-low.c (offload_symbol_decl): Remove variable.
(get_offload_symbol_decl): Remove function.
(expand_omp_target): For BUILT_IN_GOMP_TARGET,
BUILT_IN_GOMP_TARGET_DATA, BUILT_IN_GOMP_TARGET_UPDATE pass NULL
instead of &__OFFLOAD_TABLE__, for BUILT_IN_GOACC_DATA_START,
BUILT_IN_GOACC_ENTER_EXIT_DATA, BUILT_IN_GOACC_PARALLEL,
BUILT_IN_GOACC_UPDATE don't pass it at all.
libgomp/
* libgomp_g.h (GOACC_data_start, GOACC_enter_exit_data)
(GOACC_parallel, GOACC_update): Remove const_void *offload_table
formal parameter. Update all users.
* target.c (GOMP_target, GOMP_target_data, GOMP_target_update):
Document unused formal parameter.
From-SVN: r219836
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/omp-low.c | 45 |
2 files changed, 28 insertions, 27 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f3431b..3ee35a6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2015-01-19 Thomas Schwinge <thomas@codesourcery.com> + + * omp-low.c (offload_symbol_decl): Remove variable. + (get_offload_symbol_decl): Remove function. + (expand_omp_target): For BUILT_IN_GOMP_TARGET, + BUILT_IN_GOMP_TARGET_DATA, BUILT_IN_GOMP_TARGET_UPDATE pass NULL + instead of &__OFFLOAD_TABLE__, for BUILT_IN_GOACC_DATA_START, + BUILT_IN_GOACC_ENTER_EXIT_DATA, BUILT_IN_GOACC_PARALLEL, + BUILT_IN_GOACC_UPDATE don't pass it at all. + 2015-01-19 Ilya Enkovich <ilya.enkovich@intel.com> * tree-sra.c (some_callers_have_mismatched_arguments_p): Allow thunk diff --git a/gcc/omp-low.c b/gcc/omp-low.c index b7bf338..1589310 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -340,30 +340,6 @@ oacc_max_threads (omp_context *ctx) /* Holds offload tables with decls. */ vec<tree, va_gc> *offload_funcs, *offload_vars; -/* Holds a decl for __OFFLOAD_TABLE__. */ -static GTY(()) tree offload_symbol_decl; - -/* Get the __OFFLOAD_TABLE__ symbol. */ -static tree -get_offload_symbol_decl (void) -{ - if (!offload_symbol_decl) - { - tree decl = build_decl (UNKNOWN_LOCATION, VAR_DECL, - get_identifier ("__OFFLOAD_TABLE__"), - ptr_type_node); - TREE_ADDRESSABLE (decl) = 1; - TREE_PUBLIC (decl) = 1; - DECL_EXTERNAL (decl) = 1; - DECL_WEAK (decl) = 1; - DECL_ATTRIBUTES (decl) - = tree_cons (get_identifier ("weak"), - NULL_TREE, DECL_ATTRIBUTES (decl)); - offload_symbol_decl = decl; - } - return offload_symbol_decl; -} - /* Convenience function for calling scan_omp_1_op on tree operands. */ static inline tree @@ -9119,16 +9095,31 @@ expand_omp_target (struct omp_region *region) } gimple g; - tree offload_table = get_offload_symbol_decl (); vec<tree> *args; /* The maximum number used by any start_ix, without varargs. */ - unsigned int argcnt = 12; + unsigned int argcnt = 11; vec_alloc (args, argcnt); args->quick_push (device); if (offloaded) args->quick_push (build_fold_addr_expr (child_fn)); - args->quick_push (build_fold_addr_expr (offload_table)); + switch (start_ix) + { + case BUILT_IN_GOMP_TARGET: + case BUILT_IN_GOMP_TARGET_DATA: + case BUILT_IN_GOMP_TARGET_UPDATE: + /* This const void * is part of the current ABI, but we're not actually + using it. */ + args->quick_push (build_zero_cst (ptr_type_node)); + break; + case BUILT_IN_GOACC_DATA_START: + case BUILT_IN_GOACC_ENTER_EXIT_DATA: + case BUILT_IN_GOACC_PARALLEL: + case BUILT_IN_GOACC_UPDATE: + break; + default: + gcc_unreachable (); + } args->quick_push (t1); args->quick_push (t2); args->quick_push (t3); |