From f4e1f74e9e69e59e1d927f964761ff190ebfeb6b Mon Sep 17 00:00:00 2001 From: "Wen-Heng (Jack) Chung" Date: Mon, 11 Feb 2019 09:31:30 -0600 Subject: [PATCH] Introduce __HIP_DISABLE_CPP_FUNCTIONS__ macro to disable C++ wrappers hipMalloc and hipHostMalloc are C++ function templates by default. In some applications they need to discover the decltype of underlying C functions. In this commit, a new macro __HIP_DISABLE_CPP_FUNCTIONS__ is introduced to suppress the C++ function templates. Existing HIP applications don't need to be changed. hipMalloc and hipHostMalloc will behave just the same. For new applications which depends on identifying decltypes of underlying C functions, __HIP_DISABLE_CPP_FUNCTIONS__ shall be defined prior to including HIP headers. --- hipamd/include/hip/hip_runtime_api.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hipamd/include/hip/hip_runtime_api.h b/hipamd/include/hip/hip_runtime_api.h index cd7af65265..34363689e4 100644 --- a/hipamd/include/hip/hip_runtime_api.h +++ b/hipamd/include/hip/hip_runtime_api.h @@ -318,9 +318,13 @@ enum hipComputeMode { * * Perform automatic type conversion to eliminate need for excessive typecasting (ie void**) * + * __HIP_DISABLE_CPP_FUNCTIONS__ macro can be defined to suppress these + * wrappers. It is useful for applications which need to obtain decltypes of + * HIP runtime APIs. + * * @see hipMalloc */ -#ifdef __cplusplus +#if defined(__cplusplus) && !defined(__HIP_DISABLE_CPP_FUNCTIONS__) template static inline hipError_t hipMalloc(T** devPtr, size_t size) { return hipMalloc((void**)devPtr, size);