1
2 #include "backports.h"
3 #include "llvm/IR/Instructions.h"
4 #include "llvm/Transforms/IPO/PassManagerBuilder.h"
5 #include "llvm/Transforms/Coroutines.h"
6 #include "llvm-c/DebugInfo.h"
7
8 namespace llvm {
9
unwrap(LLVMPassManagerBuilderRef P)10 inline PassManagerBuilder *unwrap(LLVMPassManagerBuilderRef P) {
11 return reinterpret_cast<PassManagerBuilder*>(P);
12 }
13
wrap(PassManagerBuilder * P)14 inline LLVMPassManagerBuilderRef wrap(PassManagerBuilder *P) {
15 return reinterpret_cast<LLVMPassManagerBuilderRef>(P);
16 }
17
18 } // end namespace llvm
19
LLVMPassManagerBuilderAddCoroutinePassesToExtensionPoints_backport(LLVMPassManagerBuilderRef PMB)20 void LLVMPassManagerBuilderAddCoroutinePassesToExtensionPoints_backport(LLVMPassManagerBuilderRef PMB) {
21 llvm::PassManagerBuilder *Builder = llvm::unwrap(PMB);
22 llvm::addCoroutinePassesToExtensionPoints(*Builder);
23 }
24
LLVMGlobalObjectAddMetadata(LLVMValueRef Global,unsigned KindID,LLVMMetadataRef MD)25 void LLVMGlobalObjectAddMetadata(LLVMValueRef Global, unsigned KindID, LLVMMetadataRef MD) {
26 llvm::MDNode *N = MD ? llvm::unwrap<llvm::MDNode>(MD) : nullptr;
27 llvm::GlobalObject *O = llvm::unwrap<llvm::GlobalObject>(Global);
28 O->addMetadata(KindID, *N);
29 }
30
31 LLVMMetadataRef
LLVMGoDIBuilderCreateTypedef(LLVMDIBuilderRef Builder,LLVMMetadataRef Type,const char * Name,size_t NameLen,LLVMMetadataRef File,unsigned LineNo,LLVMMetadataRef Scope,uint32_t AlignInBits)32 LLVMGoDIBuilderCreateTypedef(LLVMDIBuilderRef Builder, LLVMMetadataRef Type,
33 const char *Name, size_t NameLen,
34 LLVMMetadataRef File, unsigned LineNo,
35 LLVMMetadataRef Scope, uint32_t AlignInBits) {
36 #if LLVM_VERSION_MAJOR >= 10
37 return LLVMDIBuilderCreateTypedef(Builder, Type, Name, NameLen, File, LineNo, Scope, AlignInBits);
38 #else
39 return LLVMDIBuilderCreateTypedef(Builder, Type, Name, NameLen, File, LineNo, Scope);
40 #endif
41 }
42