diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm-c/DebugInfo.h | 34 | ||||
| -rw-r--r-- | llvm/lib/IR/DebugInfo.cpp | 25 | 
2 files changed, 59 insertions, 0 deletions
diff --git a/llvm/include/llvm-c/DebugInfo.h b/llvm/include/llvm-c/DebugInfo.h index 414a5bf0805..33c8110a863 100644 --- a/llvm/include/llvm-c/DebugInfo.h +++ b/llvm/include/llvm-c/DebugInfo.h @@ -459,6 +459,40 @@ LLVMMetadataRef LLVMDILocationGetScope(LLVMMetadataRef Location);   */  LLVMMetadataRef LLVMDILocationGetInlinedAt(LLVMMetadataRef Location); +/** + * Get the metadata of the file associated with a given scope. + * \param Scope     The scope object. + * + * @see DIScope::getFile() + */ +LLVMMetadataRef LLVMDIScopeGetFile(LLVMMetadataRef Scope); + +/** + * Get the directory of a given file. + * \param File     The file object. + * \param Len      The length of the returned string. + * + * @see DIFile::getDirectory() + */ +const char *LLVMDIFileGetDirectory(LLVMMetadataRef File, unsigned *Len); + +/** + * Get the name of a given file. + * \param File     The file object. + * \param Len      The length of the returned string. + * + * @see DIFile::getFilename() + */ +const char *LLVMDIFileGetFilename(LLVMMetadataRef File, unsigned *Len); + +/** + * Get the source of a given file. + * \param File     The file object. + * \param Len      The length of the returned string. + * + * @see DIFile::getSource() + */ +const char *LLVMDIFileGetSource(LLVMMetadataRef File, unsigned *Len);  /**   * Create a type array. diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp index 124462355cd..69579047976 100644 --- a/llvm/lib/IR/DebugInfo.cpp +++ b/llvm/lib/IR/DebugInfo.cpp @@ -903,6 +903,31 @@ LLVMMetadataRef LLVMDILocationGetInlinedAt(LLVMMetadataRef Location) {    return wrap(unwrapDI<DILocation>(Location)->getInlinedAt());  } +LLVMMetadataRef LLVMDIScopeGetFile(LLVMMetadataRef Scope) { +  return wrap(unwrapDI<DIScope>(Scope)->getFile()); +} + +const char *LLVMDIFileGetDirectory(LLVMMetadataRef File, unsigned *Len) { +  auto Dir = unwrapDI<DIFile>(File)->getDirectory(); +  *Len = Dir.size(); +  return Dir.data(); +} + +const char *LLVMDIFileGetFilename(LLVMMetadataRef File, unsigned *Len) { +  auto Name = unwrapDI<DIFile>(File)->getFilename(); +  *Len = Name.size(); +  return Name.data(); +} + +const char *LLVMDIFileGetSource(LLVMMetadataRef File, unsigned *Len) { +  if (auto Src = unwrapDI<DIFile>(File)->getSource()) { +    *Len = Src->size(); +    return Src->data(); +  } +  *Len = 0; +  return ""; +} +  LLVMMetadataRef LLVMDIBuilderCreateEnumerator(LLVMDIBuilderRef Builder,                                                const char *Name, size_t NameLen,                                                int64_t Value,  | 

