From 2989140f784fcb95617f84d77eb9b3c4f516f6d9 Mon Sep 17 00:00:00 2001
From: foreman
Date: Mon, 23 Dec 2019 12:42:24 -0500
Subject: [PATCH] P4 to Git Change 2049729 by
skudchad@skudchad_test2_win_opencl on 2019/12/23 12:36:57
SWDEV-203814 - Change the return type of the hiprtcGetTypeName to have compatibility across ABIs
ReviewBoardURL = http://ocltc.amd.com/reviews/r/18392/diff/
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/hip/hip_rtc.cpp#9 edit
---
api/hip/hip_rtc.cpp | 54 ++++++++++++++++++++++-----------------------
1 file changed, 27 insertions(+), 27 deletions(-)
diff --git a/api/hip/hip_rtc.cpp b/api/hip/hip_rtc.cpp
index 4e2c99e6df..e3cfd3f885 100644
--- a/api/hip/hip_rtc.cpp
+++ b/api/hip/hip_rtc.cpp
@@ -109,62 +109,62 @@ uint32_t ProgramState::addNameExpression(const char* name_expression) {
namespace hip_impl {
-inline std::string demangle(const char* x) {
+char* demangle(const char* loweredName) {
#ifdef ATI_OS_LINUX
- if (!x) {
- return {};
+ if (!loweredName) {
+ return nullptr;
}
- int s = 0;
- std::unique_ptr tmp{
- __cxa_demangle(x, nullptr, nullptr, &s),
- std::free};
- if (s != 0) {
- return {};
+ int status = 0;
+ char* demangledName = __cxa_demangle(loweredName, nullptr, nullptr, &status);
+ if (status != 0) {
+ return nullptr;
}
- return tmp.get();
+ return demangledName;
#else
- return {};
+ return nullptr;
#endif
}
} // hip_impl
-std::string handleMangledName(std::string name) {
- std::string demangled;
- demangled = hip_impl::demangle(name.c_str());
+static std::string handleMangledName(std::string name) {
+ std::string loweredName;
+ char* demangled = hip_impl::demangle(name.c_str());
+ loweredName.assign(demangled == nullptr ? std::string() : demangled);
+ free(demangled);
- if (demangled.empty()) {
+ if (loweredName.empty()) {
return name;
}
- if (demangled.find(".kd") != std::string::npos) {
+ if (loweredName.find(".kd") != std::string::npos) {
return {};
}
- if (demangled.find("void ") == 0) {
- demangled.erase(0, strlen("void "));
+ if (loweredName.find("void ") == 0) {
+ loweredName.erase(0, strlen("void "));
}
- auto dx{demangled.find_first_of("(<")};
+ auto dx{loweredName.find_first_of("(<")};
if (dx == std::string::npos) {
- return demangled;
+ return loweredName;
}
- if (demangled[dx] == '<') {
- auto cnt{1u};
+ if (loweredName[dx] == '<') {
+ uint32_t count = 1;
do {
++dx;
- cnt += (demangled[dx] == '<') ? 1 : ((demangled[dx] == '>') ? -1 : 0);
- } while (cnt);
+ count += (loweredName[dx] == '<') ? 1 : ((loweredName[dx] == '>') ? -1 : 0);
+ } while (count);
- demangled.erase(++dx);
+ loweredName.erase(++dx);
} else {
- demangled.erase(dx);
+ loweredName.erase(dx);
}
- return demangled;
+ return loweredName;
}