1/*===-- 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"
16#include "llvm-c/Core.h"
17
18int add_named_metadata_operand(void) {
19  LLVMModuleRef m = LLVMModuleCreateWithName("Mod");
20  LLVMValueRef values[] = { LLVMConstInt(LLVMInt32Type(), 0, 0) };
21
22  // This used to trigger an assertion
23  LLVMAddNamedMetadataOperand(m, "name", LLVMMDNode(values, 1));
24
25  LLVMDisposeModule(m);
26
27  return 0;
28}
29
30int set_metadata(void) {
31  LLVMBuilderRef b = LLVMCreateBuilder();
32  LLVMValueRef values[] = { LLVMConstInt(LLVMInt32Type(), 0, 0) };
33
34  // This used to trigger an assertion
35  LLVMSetMetadata(
36      LLVMBuildRetVoid(b),
37      LLVMGetMDKindID("kind", 4),
38      LLVMMDNode(values, 1));
39
40  LLVMDisposeBuilder(b);
41
42  return 0;
43}
44