Skip to content

Commit b2b532a

Browse files
committed
Add GlobalAddMetadata and extend test
1 parent 0d799d6 commit b2b532a

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

llvm/include/llvm-c/Core.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2693,6 +2693,14 @@ LLVM_C_ABI void LLVMSetAlignment(LLVMValueRef V, unsigned Bytes);
26932693
LLVM_C_ABI void LLVMGlobalSetMetadata(LLVMValueRef Global, unsigned Kind,
26942694
LLVMMetadataRef MD);
26952695

2696+
/**
2697+
* Adds a metadata attachment.
2698+
*
2699+
* @see llvm::GlobalObject::addMetadata()
2700+
*/
2701+
LLVM_C_ABI void LLVMGlobalAddMetadata(LLVMValueRef Global, unsigned Kind,
2702+
LLVMMetadataRef MD);
2703+
26962704
/**
26972705
* Erases a metadata attachment of the given kind if it exists.
26982706
*

llvm/lib/IR/Core.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2186,6 +2186,11 @@ void LLVMGlobalSetMetadata(LLVMValueRef Global, unsigned Kind,
21862186
unwrap<GlobalObject>(Global)->setMetadata(Kind, unwrap<MDNode>(MD));
21872187
}
21882188

2189+
void LLVMGlobalAddMetadata(LLVMValueRef Global, unsigned Kind,
2190+
LLVMMetadataRef MD) {
2191+
unwrap<GlobalObject>(Global)->addMetadata(Kind, *unwrap<MDNode>(MD));
2192+
}
2193+
21892194
void LLVMGlobalEraseMetadata(LLVMValueRef Global, unsigned Kind) {
21902195
unwrap<GlobalObject>(Global)->eraseMetadata(Kind);
21912196
}

llvm/tools/llvm-c-test/debuginfo.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -440,10 +440,13 @@ int llvm_add_globaldebuginfo(void) {
440440
LLVMValueRef Global = LLVMAddGlobal(M, RecType, "global");
441441

442442
LLVMGlobalAddDebugInfo(Global, GVE);
443+
// use AddMetadata to add twice
444+
int kindId = LLVMGetMDKindID("dbg", 3);
445+
LLVMGlobalAddMetadata(Global, kindId, GVE);
443446
size_t numEntries;
444447
LLVMValueMetadataEntry *ME = LLVMGlobalCopyAllMetadata(Global, &numEntries);
445448
assert(ME != NULL);
446-
assert(numEntries == 1);
449+
assert(numEntries == 2);
447450

448451
LLVMDisposeDIBuilder(Builder);
449452
LLVMDisposeModule(M);

0 commit comments

Comments
 (0)