[LLVMbugs] [Bug 18778] New: clang fails to emit LLVM for template CUDA kernels (device code with -fcuda-is-device)
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Sat Feb 8 09:49:59 PST 2014
http://llvm.org/bugs/show_bug.cgi?id=18778
Bug ID: 18778
Summary: clang fails to emit LLVM for template CUDA kernels
(device code with -fcuda-is-device)
Product: clang
Version: trunk
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: P
Component: LLVM Codegen
Assignee: unassignedclangbugs at nondot.org
Reporter: michael.haidl at uni-muenster.de
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
When compiling valid CUDA code to LLVM (clang++ -Xclang -fcuda-is-device -S
-emit-llvm -target nvptx64) clang fails to emit LLVM code on template kernels.
This may happen because the global attribute get lost on template
instanciation. Non-template kernels compile fine and working LLVM code is
emitted. However, template device functions called from a global function is
correctly instanciated and emitted.
Code to reproduce:
#ifndef __CUDACC__
#include <stddef.h>
#define __constant__ __attribute__((constant))
#define __device__ __attribute__((device))
#define __global__ __attribute__((global))
#define __host__ __attribute__((host))
#define __shared__ __attribute__((shared))
struct dim3 {
unsigned x, y, z;
__host__ __device__ dim3(unsigned x, unsigned y = 1, unsigned z = 1) : x(x),
y(y), z(z) {}
};
typedef struct cudaStream *cudaStream_t;
int cudaConfigureCall(dim3 gridSize, dim3 blockSize, size_t sharedSize = 0,
cudaStream_t stream = 0);
#endif
template <typename T>
__device__ int dev_f(T& a, float& b, double& c)
{
a = a * b;
b = b - c;
c = a * c;
return a;
}
template <typename T>
__global__ void kernel(T a, float b, double c)
{
int result = dev_f<T>(a, b, c);
}
int main()
{
kernel<int><<<dim3(1), dim3(1)>>>(5, 0.7f, 12.34);
return 0;
}
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140208/494b3f2c/attachment.html>
More information about the llvm-bugs
mailing list