-
Notifications
You must be signed in to change notification settings - Fork 96
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
The CUDA function "cudaGetErrorString", which converts a CUDA error code onto a user-readable error string, is incorrectly translated by syclomatic when used as parameter on a macro. Syclomatic translates the name of the function with a string, but the expectation is to keep the function name at that point so that it can be used in nested macros.
To reproduce
The code below:
#include <cstdio>
#include <cuda_runtime.h>
#define CHECK_CUDA_FUNCTION(errNo, errFunc) \
errFunc(errNo)
#define CHECK_CUDA(errNo) \
CHECK_CUDA_FUNCTION(errNo, cudaGetErrorString)
int main() {
printf("%s \n", CHECK_CUDA(cudaSuccess));
};
is incorrectly converted to
#include <sycl/sycl.hpp>
#include <dpct/dpct.hpp>
#include <cstdio>
#define CHECK_CUDA_FUNCTION(errNo, errFunc) \
errFunc(errNo)
#define CHECK_CUDA(errNo) CHECK_CUDA_FUNCTION(errNo, "<Placeholder string>")
int main() {
/*
DPCT1009:0: SYCL uses exceptions to report errors and does not use the
error codes. The call was replaced by a placeholder string. You need to
rewrite this code.
*/
printf("%s \n", CHECK_CUDA(0));
};
Environment
No response
Additional context
No response
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working