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
This commit is contained in:
foreman
2019-12-23 12:42:24 -05:00
rodzic 0c35aa5f1c
commit 2989140f78
+27 -27
Wyświetl plik
@@ -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<char, decltype(std::free)*> 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;
}