[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
This commit is contained in:
parent
3d36be01e4
commit
128b26dceb
|
@ -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>
|
2015-01-19 Ilya Enkovich <ilya.enkovich@intel.com>
|
||||||
|
|
||||||
* tree-sra.c (some_callers_have_mismatched_arguments_p): Allow thunk
|
* tree-sra.c (some_callers_have_mismatched_arguments_p): Allow thunk
|
||||||
|
|
|
@ -340,30 +340,6 @@ oacc_max_threads (omp_context *ctx)
|
||||||
/* Holds offload tables with decls. */
|
/* Holds offload tables with decls. */
|
||||||
vec<tree, va_gc> *offload_funcs, *offload_vars;
|
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. */
|
/* Convenience function for calling scan_omp_1_op on tree operands. */
|
||||||
|
|
||||||
static inline tree
|
static inline tree
|
||||||
|
@ -9119,16 +9095,31 @@ expand_omp_target (struct omp_region *region)
|
||||||
}
|
}
|
||||||
|
|
||||||
gimple g;
|
gimple g;
|
||||||
tree offload_table = get_offload_symbol_decl ();
|
|
||||||
vec<tree> *args;
|
vec<tree> *args;
|
||||||
/* The maximum number used by any start_ix, without varargs. */
|
/* The maximum number used by any start_ix, without varargs. */
|
||||||
unsigned int argcnt = 12;
|
unsigned int argcnt = 11;
|
||||||
|
|
||||||
vec_alloc (args, argcnt);
|
vec_alloc (args, argcnt);
|
||||||
args->quick_push (device);
|
args->quick_push (device);
|
||||||
if (offloaded)
|
if (offloaded)
|
||||||
args->quick_push (build_fold_addr_expr (child_fn));
|
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 (t1);
|
||||||
args->quick_push (t2);
|
args->quick_push (t2);
|
||||||
args->quick_push (t3);
|
args->quick_push (t3);
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
2015-01-19 Thomas Schwinge <thomas@codesourcery.com>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
2015-01-16 Thomas Schwinge <thomas@codesourcery.com>
|
2015-01-16 Thomas Schwinge <thomas@codesourcery.com>
|
||||||
|
|
||||||
* oacc-parallel.c: Don't include <alloca.h>.
|
* oacc-parallel.c: Don't include <alloca.h>.
|
||||||
|
|
|
@ -217,15 +217,15 @@ extern void GOMP_teams (unsigned int, unsigned int);
|
||||||
|
|
||||||
/* oacc-parallel.c */
|
/* oacc-parallel.c */
|
||||||
|
|
||||||
extern void GOACC_data_start (int, const void *,
|
extern void GOACC_data_start (int, size_t, void **, size_t *,
|
||||||
size_t, void **, size_t *, unsigned short *);
|
unsigned short *);
|
||||||
extern void GOACC_data_end (void);
|
extern void GOACC_data_end (void);
|
||||||
extern void GOACC_enter_exit_data (int, const void *, size_t, void **,
|
extern void GOACC_enter_exit_data (int, size_t, void **,
|
||||||
size_t *, unsigned short *, int, int, ...);
|
size_t *, unsigned short *, int, int, ...);
|
||||||
extern void GOACC_parallel (int, void (*) (void *), const void *, size_t,
|
extern void GOACC_parallel (int, void (*) (void *), size_t,
|
||||||
void **, size_t *, unsigned short *, int, int, int,
|
void **, size_t *, unsigned short *, int, int, int,
|
||||||
int, int, ...);
|
int, int, ...);
|
||||||
extern void GOACC_update (int, const void *, size_t, void **, size_t *,
|
extern void GOACC_update (int, size_t, void **, size_t *,
|
||||||
unsigned short *, int, int, ...);
|
unsigned short *, int, int, ...);
|
||||||
extern void GOACC_wait (int, int, ...);
|
extern void GOACC_wait (int, int, ...);
|
||||||
extern int GOACC_get_num_threads (void);
|
extern int GOACC_get_num_threads (void);
|
||||||
|
|
|
@ -75,7 +75,7 @@ select_acc_device (int device_type)
|
||||||
static void goacc_wait (int async, int num_waits, va_list ap);
|
static void goacc_wait (int async, int num_waits, va_list ap);
|
||||||
|
|
||||||
void
|
void
|
||||||
GOACC_parallel (int device, void (*fn) (void *), const void *offload_table,
|
GOACC_parallel (int device, void (*fn) (void *),
|
||||||
size_t mapnum, void **hostaddrs, size_t *sizes,
|
size_t mapnum, void **hostaddrs, size_t *sizes,
|
||||||
unsigned short *kinds,
|
unsigned short *kinds,
|
||||||
int num_gangs, int num_workers, int vector_length,
|
int num_gangs, int num_workers, int vector_length,
|
||||||
|
@ -172,7 +172,7 @@ GOACC_parallel (int device, void (*fn) (void *), const void *offload_table,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GOACC_data_start (int device, const void *offload_table, size_t mapnum,
|
GOACC_data_start (int device, size_t mapnum,
|
||||||
void **hostaddrs, size_t *sizes, unsigned short *kinds)
|
void **hostaddrs, size_t *sizes, unsigned short *kinds)
|
||||||
{
|
{
|
||||||
bool host_fallback = device == GOMP_DEVICE_HOST_FALLBACK;
|
bool host_fallback = device == GOMP_DEVICE_HOST_FALLBACK;
|
||||||
|
@ -218,7 +218,7 @@ GOACC_data_end (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GOACC_enter_exit_data (int device, const void *offload_table, size_t mapnum,
|
GOACC_enter_exit_data (int device, size_t mapnum,
|
||||||
void **hostaddrs, size_t *sizes, unsigned short *kinds,
|
void **hostaddrs, size_t *sizes, unsigned short *kinds,
|
||||||
int async, int num_waits, ...)
|
int async, int num_waits, ...)
|
||||||
{
|
{
|
||||||
|
@ -408,7 +408,7 @@ goacc_wait (int async, int num_waits, va_list ap)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GOACC_update (int device, const void *offload_table, size_t mapnum,
|
GOACC_update (int device, size_t mapnum,
|
||||||
void **hostaddrs, size_t *sizes, unsigned short *kinds,
|
void **hostaddrs, size_t *sizes, unsigned short *kinds,
|
||||||
int async, int num_waits, ...)
|
int async, int num_waits, ...)
|
||||||
{
|
{
|
||||||
|
|
|
@ -738,15 +738,14 @@ gomp_fini_device (struct gomp_device_descr *devicep)
|
||||||
is GOMP_DEVICE_ICV, it means use device-var ICV. If it is
|
is GOMP_DEVICE_ICV, it means use device-var ICV. If it is
|
||||||
GOMP_DEVICE_HOST_FALLBACK (or any value
|
GOMP_DEVICE_HOST_FALLBACK (or any value
|
||||||
larger than last available hw device), use host fallback.
|
larger than last available hw device), use host fallback.
|
||||||
FN is address of host code, OFFLOAD_TABLE contains value of the
|
FN is address of host code, UNUSED is part of the current ABI, but
|
||||||
__OFFLOAD_TABLE__ symbol in the shared library or binary that invokes
|
we're not actually using it. HOSTADDRS, SIZES and KINDS are arrays
|
||||||
GOMP_target. HOSTADDRS, SIZES and KINDS are arrays
|
|
||||||
with MAPNUM entries, with addresses of the host objects,
|
with MAPNUM entries, with addresses of the host objects,
|
||||||
sizes of the host objects (resp. for pointer kind pointer bias
|
sizes of the host objects (resp. for pointer kind pointer bias
|
||||||
and assumed sizeof (void *) size) and kinds. */
|
and assumed sizeof (void *) size) and kinds. */
|
||||||
|
|
||||||
void
|
void
|
||||||
GOMP_target (int device, void (*fn) (void *), const void *offload_table,
|
GOMP_target (int device, void (*fn) (void *), const void *unused,
|
||||||
size_t mapnum, void **hostaddrs, size_t *sizes,
|
size_t mapnum, void **hostaddrs, size_t *sizes,
|
||||||
unsigned char *kinds)
|
unsigned char *kinds)
|
||||||
{
|
{
|
||||||
|
@ -817,7 +816,7 @@ GOMP_target (int device, void (*fn) (void *), const void *offload_table,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GOMP_target_data (int device, const void *offload_table, size_t mapnum,
|
GOMP_target_data (int device, const void *unused, size_t mapnum,
|
||||||
void **hostaddrs, size_t *sizes, unsigned char *kinds)
|
void **hostaddrs, size_t *sizes, unsigned char *kinds)
|
||||||
{
|
{
|
||||||
struct gomp_device_descr *devicep = resolve_device (device);
|
struct gomp_device_descr *devicep = resolve_device (device);
|
||||||
|
@ -873,7 +872,7 @@ GOMP_target_end_data (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GOMP_target_update (int device, const void *offload_table, size_t mapnum,
|
GOMP_target_update (int device, const void *unused, size_t mapnum,
|
||||||
void **hostaddrs, size_t *sizes, unsigned char *kinds)
|
void **hostaddrs, size_t *sizes, unsigned char *kinds)
|
||||||
{
|
{
|
||||||
struct gomp_device_descr *devicep = resolve_device (device);
|
struct gomp_device_descr *devicep = resolve_device (device);
|
||||||
|
|
Loading…
Reference in New Issue