diff --git a/llvm/include/llvm-c/DebugInfo.h b/llvm/include/llvm-c/DebugInfo.h --- a/llvm/include/llvm-c/DebugInfo.h +++ b/llvm/include/llvm-c/DebugInfo.h @@ -226,6 +226,13 @@ */ void LLVMDIBuilderFinalize(LLVMDIBuilderRef Builder); +/** + * Finalize a specific subprogram. + * No new variables may be added to this subprogram afterwards. + */ +void LLVMDIBuilderFinalizeSubprogram(LLVMDIBuilderRef Builder, + LLVMMetadataRef Subprogram); + /** * A CompileUnit provides an anchor for all debugging * information generated during this instance of compilation. diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp --- a/llvm/lib/IR/DebugInfo.cpp +++ b/llvm/lib/IR/DebugInfo.cpp @@ -909,6 +909,11 @@ unwrap(Builder)->finalize(); } +void LLVMDIBuilderFinalizeSubprogram(LLVMDIBuilderRef Builder, + LLVMMetadataRef subprogram) { + unwrap(Builder)->finalizeSubprogram(unwrapDI(subprogram)); +} + LLVMMetadataRef LLVMDIBuilderCreateCompileUnit( LLVMDIBuilderRef Builder, LLVMDWARFSourceLanguage Lang, LLVMMetadataRef FileRef, const char *Producer, size_t ProducerLen,