norecurse function attr indicates the function is not called recursively directly or indirectly. Add norecurse to OpenCL functions, SYCL functions in device compilation and CUDA/HIP kernels. Although there is LLVM pass adding norecurse to functions, it only works for whole-program compilation. Also FE adding norecurse can make that pass run faster since functions with norecurse do not need to be checked again. Differential Revision: https://reviews.llvm.org/D73651
10 lines
338 B
Plaintext
10 lines
338 B
Plaintext
// RUN: %clang_cc1 %s --std=c++11 -triple x86_64-unknown-linux -emit-llvm -o - \
|
|
// RUN: -verify -fsyntax-only -verify-ignore-unexpected=note
|
|
|
|
#include "Inputs/cuda.h"
|
|
|
|
__global__ void kernel1();
|
|
__global__ void kernel2() {
|
|
kernel1<<<1,1>>>(); // expected-error {{reference to __global__ function 'kernel1' in __global__ function}}
|
|
}
|