33c4e46624
As -foffload={options,targets,targets=options} is very convoluted, it has been split into -foffload=targets (supporting the old syntax for backward compatibilty) and -foffload-options={options,target=options}. Only the new syntax is documented. Additionally, -foffload=default is supported, which can reset the devices after -foffload=disable / -foffload=targets to the default, if needed. gcc/ChangeLog: PR other/67300 * common.opt (-foffload=): Update description. (-foffload-options=): New. * doc/invoke.texi (C Language Options): Document -foffload and -foffload-options. * gcc.c (check_offload_target_name): New, split off from handle_foffload_option. (check_foffload_target_names): New. (handle_foffload_option): Handle -foffload=default. (driver_handle_option): Update for -foffload-options. * lto-opts.c (lto_write_options): Use -foffload-options instead of -foffload. * lto-wrapper.c (merge_and_complain, append_offload_options): Likewise. * opts.c (common_handle_option): Likewise. libgomp/ChangeLog: PR other/67300 * testsuite/libgomp.c-c++-common/reduction-16.c: Replace -foffload=nvptx-none= by -foffload-options=nvptx-none= to avoid disabling other offload targets. * testsuite/libgomp.c-c++-common/reduction-5.c: Likewise. * testsuite/libgomp.c-c++-common/reduction-6.c: Likewise. * testsuite/libgomp.c/target-44.c: Likewise.
28 lines
476 B
C
28 lines
476 B
C
/* { dg-additional-options "-foffload-options=nvptx-none=-latomic" { target { offload_target_nvptx } } } */
|
|
|
|
#include <stdlib.h>
|
|
|
|
struct s
|
|
{
|
|
int i;
|
|
};
|
|
|
|
#pragma omp declare reduction(+: struct s: omp_out.i += omp_in.i)
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
const int N0 = 32768;
|
|
|
|
struct s counter_N0 = { 0 };
|
|
#pragma omp target
|
|
#pragma omp for simd reduction(+: counter_N0)
|
|
for (int i0 = 0 ; i0 < N0 ; i0++ )
|
|
counter_N0.i += 1;
|
|
|
|
if (counter_N0.i != N0)
|
|
abort ();
|
|
|
|
return 0;
|
|
}
|