mirror of
https://github.com/intel/llvm.git
synced 2026-01-13 11:02:04 +08:00
These are C tests, not C++, so no function parameters means unspecified number of parameters, not `void`. These compile fine on the current tested offload targets because an error is only [thrown](https://github.com/llvm/llvm-project/blob/main/clang/lib/Sema/SemaDecl.cpp#L10695) if the calling convention doesn't support variadic arguments, which they happen to. When compiling this test for other targets that do not support variadic arguments, we get an error, which does not seem intentional. Just add `void` to the parameter list. --------- Signed-off-by: Nick Sarnie <nick.sarnie@intel.com>
24 lines
728 B
C
24 lines
728 B
C
// clang-format off
|
|
// RUN: mkdir -p %t.testdir
|
|
// RUN: %clang-generic -fPIC -shared %S/../Inputs/declare_indirect_func.c -o %t.testdir/libslfm.so -fopenmp-version=51
|
|
// RUN: %libomptarget-compile-generic -rpath %t.testdir -L %t.testdir -l slfm -o %t -fopenmp-version=51
|
|
// RUN: env LIBOMPTARGET_INFO=32 %t 2>&1 | %fcheck-generic
|
|
// clang-format on
|
|
|
|
#include <stdio.h>
|
|
|
|
extern int func(void); // Provided in liba.so, returns 42
|
|
typedef int (*fp_t)(void);
|
|
|
|
int main() {
|
|
int x = 0;
|
|
fp_t fp = &func;
|
|
printf("TARGET\n");
|
|
#pragma omp target map(from : x)
|
|
x = fp();
|
|
// CHECK: Copying data from device to host, {{.*}} Size=8
|
|
// CHECK: Copying data from device to host, {{.*}} Size=4
|
|
// CHECK: 42
|
|
printf("%i\n", x);
|
|
}
|