llvm-project/clang/test/SemaCUDA/builtin-mangled-name.cu
Yaxun (Sam) Liu cc9477166a [CUDA][HIP] add __builtin_get_device_side_mangled_name
Add builtin function __builtin_get_device_side_mangled_name
to get device side manged name for functions and global
variables, which can be used to get symbol address of kernels
or variables by mangled name in dynamically loaded
bundled code objects at run time.

Reviewed by: Artem Belevich

Differential Revision: https://reviews.llvm.org/D99301
2021-03-25 15:25:29 -04:00

25 lines
1.1 KiB
Plaintext

// RUN: %clang_cc1 -triple x86_64-unknown-gnu-linux -aux-triple amdgcn-amd-amdhsa \
// RUN: -verify -fsyntax-only -x hip %s
#include "Inputs/cuda.h"
__global__ void kern1();
int y;
void fun1() {
int x;
const char *p;
p = __builtin_get_device_side_mangled_name();
// expected-error@-1 {{invalid argument: symbol must be a device-side function or global variable}}
p = __builtin_get_device_side_mangled_name(kern1, kern1);
// expected-error@-1 {{invalid argument: symbol must be a device-side function or global variable}}
p = __builtin_get_device_side_mangled_name(1);
// expected-error@-1 {{invalid argument: symbol must be a device-side function or global variable}}
p = __builtin_get_device_side_mangled_name(x);
// expected-error@-1 {{invalid argument: symbol must be a device-side function or global variable}}
p = __builtin_get_device_side_mangled_name(fun1);
// expected-error@-1 {{invalid argument: symbol must be a device-side function or global variable}}
p = __builtin_get_device_side_mangled_name(y);
// expected-error@-1 {{invalid argument: symbol must be a device-side function or global variable}}
}