blob: 89215b8ebcbd84c7b490945979b5ea17af9f688b [file] [log] [blame]
Bjorn Steinbrink920382c2015-01-28 16:35:59 +00001/*===-- object.c - tool for testing libLLVM and llvm-c API ----------------===*\
2|* *|
3|* The LLVM Compiler Infrastructure *|
4|* *|
5|* This file is distributed under the University of Illinois Open Source *|
6|* License. See LICENSE.TXT for details. *|
7|* *|
8|*===----------------------------------------------------------------------===*|
9|* *|
10|* This file implements the --add-named-metadata-operand and --set-metadata *|
11|* commands in llvm-c-test. *|
12|* *|
13\*===----------------------------------------------------------------------===*/
14
15#include "llvm-c-test.h"
Bjorn Steinbrink920382c2015-01-28 16:35:59 +000016
Benjamin Kramer2e130532016-02-05 13:31:14 +000017int llvm_add_named_metadata_operand(void) {
Bjorn Steinbrink920382c2015-01-28 16:35:59 +000018 LLVMModuleRef m = LLVMModuleCreateWithName("Mod");
19 LLVMValueRef values[] = { LLVMConstInt(LLVMInt32Type(), 0, 0) };
20
21 // This used to trigger an assertion
22 LLVMAddNamedMetadataOperand(m, "name", LLVMMDNode(values, 1));
23
Bjorn Steinbrinkdd4a5df2015-01-28 18:32:31 +000024 LLVMDisposeModule(m);
25
Bjorn Steinbrink920382c2015-01-28 16:35:59 +000026 return 0;
27}
28
Benjamin Kramer2e130532016-02-05 13:31:14 +000029int llvm_set_metadata(void) {
Bjorn Steinbrink920382c2015-01-28 16:35:59 +000030 LLVMBuilderRef b = LLVMCreateBuilder();
31 LLVMValueRef values[] = { LLVMConstInt(LLVMInt32Type(), 0, 0) };
32
33 // This used to trigger an assertion
34 LLVMSetMetadata(
35 LLVMBuildRetVoid(b),
36 LLVMGetMDKindID("kind", 4),
37 LLVMMDNode(values, 1));
38
Bjorn Steinbrinkdd4a5df2015-01-28 18:32:31 +000039 LLVMDisposeBuilder(b);
40
Bjorn Steinbrink920382c2015-01-28 16:35:59 +000041 return 0;
42}