[llvm] Add checksum option for create file (PR #162592)

Orlando Cazalet-Hyams via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 16 02:39:32 PDT 2025


================
@@ -1095,6 +1095,38 @@ LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const char *Filename,
                                           StringRef(Directory, DirectoryLen)));
 }
 
+static llvm::DIFile::ChecksumKind
+map_from_llvmChecksumKind(LLVMChecksumKind CSKind) {
+  switch (CSKind) {
+  case LLVMChecksumKind::CSK_MD5:
+    return llvm::DIFile::CSK_MD5;
+  case LLVMChecksumKind::CSK_SHA1:
+    return llvm::DIFile::CSK_SHA1;
+  case LLVMChecksumKind::CSK_SHA256:
+    return llvm::DIFile::CSK_SHA256;
+  }
+  llvm_unreachable("Unhandled Checksum Kind");
+}
+
+LLVMMetadataRef LLVMDIBuilderCreateFileWithCheckSum(
+    LLVMDIBuilderRef Builder, const char *Filename, size_t FilenameLen,
+    const char *Directory, size_t DirectoryLen, LLVMChecksumKind ChecksumKind,
+    const char *Checksum, size_t ChecksumLen, const char *Source,
+    size_t SourceLen) {
+  StringRef ChkSum = StringRef(Checksum, ChecksumLen);
+  std::optional<llvm::DIFile::ChecksumInfo<StringRef>> CSInfo;
----------------
OCHyams wrote:

```diff
diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp
index 5d45bb542aab..e9cfc63132a7 100644
--- a/llvm/lib/IR/DebugInfo.cpp
+++ b/llvm/lib/IR/DebugInfo.cpp
@@ -1114,9 +1114,8 @@ LLVMMetadataRef LLVMDIBuilderCreateFileWithChecksum(
     const char *Checksum, size_t ChecksumLen, const char *Source,
     size_t SourceLen) {
   StringRef ChkSum = StringRef(Checksum, ChecksumLen);
-  std::optional<llvm::DIFile::ChecksumInfo<StringRef>> CSInfo;
   auto CSK = map_from_llvmChecksumKind(ChecksumKind);
-  CSInfo.emplace(CSK, ChkSum);
+  llvm::DIFile::ChecksumInfo<StringRef> CSInfo(CSK, ChkSum);
   std::optional<StringRef> Src;
   if (SourceLen > 0)
     Src = StringRef(Source, SourceLen);
```

No problem, can you give this a try? It works for me.

https://github.com/llvm/llvm-project/pull/162592


More information about the llvm-commits mailing list