[Libomptarget] Use entry name for global info

Currently, globals on the device will have an infinite reference count
and an unknown name when using `LIBOMPTARGET_INFO` to print the mapping
table. We already store the name of the global in the offloading entry
so we should be able to use it, although there will be no source
location. To do this we need to create a valid `ident_t` string from a
name only.

Reviewed By: tianshilei1992

Differential Revision: https://reviews.llvm.org/D124381
This commit is contained in:
Joseph Huber 2022-04-25 08:28:30 -04:00
parent 6a6cc5542b
commit 5ad07ac400
3 changed files with 8 additions and 6 deletions

View file

@ -50,15 +50,17 @@ class SourceInfo {
std::string initStr(const void *Name) {
if (!Name)
return ";unknown;unknown;0;0;;";
else
return std::string(reinterpret_cast<const char *>(Name));
std::string Str = std::string(reinterpret_cast<const char *>(Name));
if (Str.find(';') == std::string::npos)
return ";" + Str + ";unknown;0;0;;";
return Str;
}
std::string initStr(const ident_t *Loc) {
if (!Loc)
return ";unknown;unknown;0;0;;";
else
return std::string(reinterpret_cast<const char *>(Loc->psource));
return std::string(reinterpret_cast<const char *>(Loc->psource));
}
/// Get n-th substring in an expression separated by ;.

View file

@ -168,7 +168,7 @@ static int InitLibrary(DeviceTy &Device) {
(uintptr_t)CurrHostEntry->addr +
CurrHostEntry->size /*HstPtrEnd*/,
(uintptr_t)CurrDeviceEntry->addr /*TgtPtrBegin*/,
false /*UseHoldRefCount*/, nullptr /*Name*/,
false /*UseHoldRefCount*/, CurrHostEntry->name,
true /*IsRefCountINF*/));
}
}

View file

@ -54,7 +54,7 @@ int main() {
// INFO: Libomptarget device 0 info: Removing map entry with HstPtrBegin={{.*}}, TgtPtrBegin={{.*}}, Size=256, Name=A[0:64]
// INFO: Libomptarget device 0 info: OpenMP Host-Device pointer mappings after block at info.c:[[#%u,]]:[[#%u,]]:
// INFO: Libomptarget device 0 info: Host Ptr Target Ptr Size (B) DynRefCount HoldRefCount Declaration
// INFO: Libomptarget device 0 info: [[#%#x,]] [[#%#x,]] 4 INF 0 unknown at unknown:0:0
// INFO: Libomptarget device 0 info: [[#%#x,]] [[#%#x,]] 4 INF 0 global at unknown:0:0
#pragma omp target data map(alloc:A[0:N]) map(ompx_hold,tofrom:B[0:N]) map(to:C[0:N])
#pragma omp target firstprivate(val)
{ val = 1; }