blob: d38ea09d10c01b13219a0e4c5e0c25436d2b74f4 [file] [log] [blame] [edit]
// RUN: %clang_cc1 -DCK1 -verify -fopenmp -fopenmp-version=51 -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck %s
// RUN: %clang_cc1 -DCK1 -verify -fopenmp-simd -fopenmp-version=51 -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY0 %s
// expected-no-diagnostics
void zoo(void) {
short x[10];
short *(xp[10]);
xp[1] = &x[0];
short **xpp = &xp[0];
x[1] = 111;
// NOTE: use_device_addr on xpp[1][1] is non-compliant, as the base-pointer
// is xpp[1], which is not a base-language identifier.
#pragma omp target data map(tofrom: xpp[1][1]) //use_device_addr(xpp[1][1])
// FIXME: The assumption that xpp should not be mapped is incorrect.
// The base-pointer of the array-section is xpp[1], not xpp, so the implicit
// clause on xpp, i.e. a zero-length array-section amp, should still be emitted.
#pragma omp target has_device_addr(xpp[1][1])
{
xpp[1][1] = 222;
}
}
// CHECK: @{{.+}} = private unnamed_addr constant [1 x i64] [i64 288]
// SIMD-ONLY0-NOT: @{{.+}} = private unnamed_addr constant [1 x i64] [i64 288]