]> gitweb.factorcode.org Git - factor.git/blob - unmaintained/llvm/core/core.factor
d84a61881e5a0604bfa7e890cb149ce9691e8929
[factor.git] / unmaintained / llvm / core / core.factor
1 ! Copyright (C) 2009 Matthew Willis.
2 ! See http://factorcode.org/license.txt for BSD license.
3
4 USING: alien alien.c-types alien.libraries alien.syntax
5 combinators kernel sequences system ;
6
7 IN: llvm.core
8
9 <<
10 : add-llvm-library ( name -- )
11     dup {
12         { [ os macosx? ] [ "lib" ".dylib" surround ] }
13         { [ os unix? ] [ "lib" ".so" surround ] }
14         { [ os windows? ] [ ".dll" append ] }
15     } cond cdecl add-library ;
16
17 { "LLVMSystem" "LLVMSupport" "LLVMCore" "LLVMBitReader" }
18 [ add-llvm-library ] each
19 >>
20
21 ! llvm-c/Core.h
22
23 LIBRARY: LLVMCore
24
25 TYPEDEF: uint unsigned
26 TYPEDEF: unsigned enum
27
28 ENUM: LLVMAttribute
29     { LLVMZExtAttribute         0b1 }
30     { LLVMSExtAttribute         0b10 }
31     { LLVMNoReturnAttribute     0b100 }
32     { LLVMInRegAttribute        0b1000 }
33     { LLVMStructRetAttribute    0b10000 }
34     { LLVMNoUnwindAttribute     0b100000 }
35     { LLVMNoAliasAttribute      0b1000000 }
36     { LLVMByValAttribute        0b10000000 }
37     { LLVMNestAttribute         0b100000000 }
38     { LLVMReadNoneAttribute     0b1000000000 }
39     { LLVMReadOnlyAttribute     0b10000000000 } ;
40
41 ENUM: LLVMTypeKind
42   LLVMVoidTypeKind
43   LLVMFloatTypeKind
44   LLVMDoubleTypeKind
45   LLVMX86_FP80TypeKind
46   LLVMFP128TypeKind
47   LLVMPPC_FP128TypeKind
48   LLVMLabelTypeKind
49   LLVMMetadataTypeKind
50   LLVMIntegerTypeKind
51   LLVMFunctionTypeKind
52   LLVMStructTypeKind
53   LLVMArrayTypeKind
54   LLVMPointerTypeKind
55   LLVMOpaqueTypeKind
56   LLVMVectorTypeKind ;
57
58 ENUM: LLVMLinkage
59   LLVMExternalLinkage
60   LLVMLinkOnceLinkage
61   LLVMWeakLinkage
62   LLVMAppendingLinkage
63   LLVMInternalLinkage
64   LLVMDLLImportLinkage
65   LLVMDLLExportLinkage
66   LLVMExternalWeakLinkage
67   LLVMGhostLinkage ;
68
69 ENUM: LLVMVisibility
70   LLVMDefaultVisibility
71   LLVMHiddenVisibility
72   LLVMProtectedVisibility ;
73
74 ENUM: LLVMCallConv
75   { LLVMCCallConv             0 }
76   { LLVMFastCallConv          8 }
77   { LLVMColdCallConv          9 }
78   { LLVMX86StdcallCallConv    64 }
79   { LLVMX86FastcallCallConv   65 } ;
80
81 ENUM: LLVMIntPredicate
82   { LLVMIntEQ                 32 }
83   { LLVMIntNE                 33 }
84   { LLVMIntUGT                34 }
85   { LLVMIntUGE                35 }
86   { LLVMIntULT                36 }
87   { LLVMIntULE                37 }
88   { LLVMIntSGT                38 }
89   { LLVMIntSGE                39 }
90   { LLVMIntSLT                40 }
91   { LLVMIntSLE                41 } ;
92
93 ENUM: LLVMRealPredicate
94   LLVMRealPredicateFalse
95   LLVMRealOEQ
96   LLVMRealOGT
97   LLVMRealOGE
98   LLVMRealOLT
99   LLVMRealOLE
100   LLVMRealONE
101   LLVMRealORD
102   LLVMRealUNO
103   LLVMRealUEQ
104   LLVMRealUGT
105   LLVMRealUGE
106   LLVMRealULT
107   LLVMRealULE
108   LLVMRealUNE
109   LLVMRealPredicateTrue ;
110
111 ! Opaque Types
112
113 TYPEDEF: void* LLVMModuleRef
114
115 TYPEDEF: void* LLVMPassManagerRef
116
117 TYPEDEF: void* LLVMModuleProviderRef
118
119 TYPEDEF: void* LLVMTypeRef
120
121 TYPEDEF: void* LLVMTypeHandleRef
122
123 TYPEDEF: void* LLVMValueRef
124
125 TYPEDEF: void* LLVMBasicBlockRef
126
127 TYPEDEF: void* LLVMBuilderRef
128
129 TYPEDEF: void* LLVMMemoryBufferRef
130
131 ! Functions
132
133 FUNCTION: void LLVMDisposeMessage ( c-string Message ) ;
134
135 FUNCTION: LLVMModuleRef LLVMModuleCreateWithName ( c-string ModuleID ) ;
136
137 FUNCTION: int LLVMAddTypeName ( LLVMModuleRef M, c-string Name, LLVMTypeRef Ty ) ;
138
139 FUNCTION: void LLVMDisposeModule ( LLVMModuleRef M ) ;
140
141 FUNCTION: void LLVMDumpModule ( LLVMModuleRef M ) ;
142
143 FUNCTION: LLVMModuleProviderRef
144 LLVMCreateModuleProviderForExistingModule ( LLVMModuleRef M ) ;
145
146 FUNCTION: void LLVMDisposeModuleProvider ( LLVMModuleProviderRef MP ) ;
147
148 ! Types
149
150 ! LLVM types conform to the following hierarchy:
151 !  
152 !    types:
153 !      integer type
154 !      real type
155 !      function type
156 !      sequence types:
157 !        array type
158 !        pointer type
159 !        vector type
160 !      void type
161 !      label type
162 !      opaque type
163
164 ! See llvm::LLVMTypeKind::getTypeID.
165 FUNCTION: LLVMTypeKind LLVMGetTypeKind ( LLVMTypeRef Ty ) ;
166
167 ! Operations on integer types
168 FUNCTION: LLVMTypeRef LLVMInt1Type ( ) ;
169 FUNCTION: LLVMTypeRef LLVMInt8Type ( ) ;
170 FUNCTION: LLVMTypeRef LLVMInt16Type ( ) ;
171 FUNCTION: LLVMTypeRef LLVMInt32Type ( ) ;
172 FUNCTION: LLVMTypeRef LLVMInt64Type ( ) ;
173 FUNCTION: LLVMTypeRef LLVMIntType ( unsigned NumBits ) ;
174 FUNCTION: unsigned LLVMGetIntTypeWidth ( LLVMTypeRef IntegerTy ) ;
175
176 ! Operations on real types
177 FUNCTION: LLVMTypeRef LLVMFloatType ( ) ;
178 FUNCTION: LLVMTypeRef LLVMDoubleType ( ) ;
179 FUNCTION: LLVMTypeRef LLVMX86FP80Type ( ) ;
180 FUNCTION: LLVMTypeRef LLVMFP128Type ( ) ;
181 FUNCTION: LLVMTypeRef LLVMPPCFP128Type ( ) ;
182
183 ! Operations on function types
184 FUNCTION: LLVMTypeRef
185 LLVMFunctionType ( LLVMTypeRef ReturnType, LLVMTypeRef* ParamTypes, unsigned ParamCount, int IsVarArg ) ;
186 FUNCTION: int LLVMIsFunctionVarArg ( LLVMTypeRef FunctionTy ) ;
187 FUNCTION: LLVMTypeRef LLVMGetReturnType ( LLVMTypeRef FunctionTy ) ;
188 FUNCTION: unsigned LLVMCountParamTypes ( LLVMTypeRef FunctionTy ) ;
189 FUNCTION: void LLVMGetParamTypes ( LLVMTypeRef FunctionTy, LLVMTypeRef* Dest ) ;
190
191 ! Operations on struct types
192 FUNCTION: LLVMTypeRef
193 LLVMStructType ( LLVMTypeRef* ElementTypes, unsigned ElementCount, int Packed ) ;
194 FUNCTION: unsigned LLVMCountStructElementTypes ( LLVMTypeRef StructTy ) ;
195 FUNCTION: void LLVMGetStructElementTypes ( LLVMTypeRef StructTy, LLVMTypeRef* Dest ) ;
196 FUNCTION: int LLVMIsPackedStruct ( LLVMTypeRef StructTy ) ;
197
198 ! Operations on array, pointer, and vector types (sequence types)
199 FUNCTION: LLVMTypeRef LLVMArrayType ( LLVMTypeRef ElementType, unsigned ElementCount ) ;
200 FUNCTION: LLVMTypeRef LLVMPointerType ( LLVMTypeRef ElementType, unsigned AddressSpace ) ;
201 FUNCTION: LLVMTypeRef LLVMVectorType ( LLVMTypeRef ElementType, unsigned ElementCount ) ;
202
203 FUNCTION: LLVMTypeRef LLVMGetElementType ( LLVMTypeRef Ty ) ;
204 FUNCTION: unsigned LLVMGetArrayLength ( LLVMTypeRef ArrayTy ) ;
205 FUNCTION: unsigned LLVMGetPointerAddressSpace ( LLVMTypeRef PointerTy ) ;
206 FUNCTION: unsigned LLVMGetVectorSize ( LLVMTypeRef VectorTy ) ;
207
208 ! Operations on other types
209 FUNCTION: LLVMTypeRef LLVMVoidType ( ) ;
210 FUNCTION: LLVMTypeRef LLVMLabelType ( ) ;
211 FUNCTION: LLVMTypeRef LLVMOpaqueType ( ) ;
212
213 ! Operations on type handles
214 FUNCTION: LLVMTypeHandleRef LLVMCreateTypeHandle ( LLVMTypeRef PotentiallyAbstractTy ) ;
215 FUNCTION: void LLVMRefineType ( LLVMTypeRef AbstractTy, LLVMTypeRef ConcreteTy ) ;
216 FUNCTION: LLVMTypeRef LLVMResolveTypeHandle ( LLVMTypeHandleRef TypeHandle ) ;
217 FUNCTION: void LLVMDisposeTypeHandle ( LLVMTypeHandleRef TypeHandle ) ;
218
219 ! Types end
220
221 FUNCTION: unsigned LLVMCountParams ( LLVMValueRef Fn ) ;
222
223 FUNCTION: void LLVMGetParams ( LLVMValueRef Fn, LLVMValueRef* Params ) ;
224
225 FUNCTION: LLVMValueRef
226 LLVMAddFunction ( LLVMModuleRef M, c-string Name, LLVMTypeRef FunctionTy ) ;
227
228 FUNCTION: LLVMValueRef LLVMGetFirstFunction ( LLVMModuleRef M ) ;
229
230 FUNCTION: LLVMValueRef LLVMGetNextFunction ( LLVMValueRef Fn ) ;
231
232 FUNCTION: unsigned LLVMGetFunctionCallConv ( LLVMValueRef Fn ) ;
233
234 FUNCTION: void LLVMSetFunctionCallConv ( LLVMValueRef Fn, unsigned CC ) ;
235
236 FUNCTION: LLVMBasicBlockRef
237 LLVMAppendBasicBlock ( LLVMValueRef Fn, c-string Name ) ;
238
239 FUNCTION: LLVMValueRef LLVMGetBasicBlockParent ( LLVMBasicBlockRef BB ) ;
240
241 ! Values
242
243 FUNCTION: LLVMTypeRef LLVMTypeOf ( LLVMValueRef Val ) ;
244 FUNCTION: c-string LLVMGetValueName ( LLVMValueRef Val ) ;
245 FUNCTION: void LLVMSetValueName ( LLVMValueRef Val, c-string Name ) ;
246 FUNCTION: void LLVMDumpValue ( LLVMValueRef Val ) ;
247
248 ! Instruction Builders
249
250 FUNCTION: LLVMBuilderRef LLVMCreateBuilder ( ) ;
251 FUNCTION: void LLVMPositionBuilder
252 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Block, LLVMValueRef Instr ) ;
253 FUNCTION: void LLVMPositionBuilderBefore
254 ( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
255 FUNCTION: void LLVMPositionBuilderAtEnd
256 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Block ) ;
257 FUNCTION: LLVMBasicBlockRef LLVMGetInsertBlock
258 ( LLVMBuilderRef Builder ) ;
259 FUNCTION: void LLVMClearInsertionPosition
260 ( LLVMBuilderRef Builder ) ;
261 FUNCTION: void LLVMInsertIntoBuilder
262 ( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
263 FUNCTION: void LLVMDisposeBuilder
264 ( LLVMBuilderRef Builder ) ;
265
266 ! IB Terminators
267
268 FUNCTION: LLVMValueRef LLVMBuildRetVoid
269 ( LLVMBuilderRef Builder ) ;
270 FUNCTION: LLVMValueRef LLVMBuildRet
271 ( LLVMBuilderRef Builder, LLVMValueRef V ) ;
272 FUNCTION: LLVMValueRef LLVMBuildBr
273 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Dest ) ;
274 FUNCTION: LLVMValueRef LLVMBuildCondBr
275 ( LLVMBuilderRef Builder, LLVMValueRef If, LLVMBasicBlockRef Then, LLVMBasicBlockRef Else ) ;
276 FUNCTION: LLVMValueRef LLVMBuildSwitch
277 ( LLVMBuilderRef Builder, LLVMValueRef V, LLVMBasicBlockRef Else, unsigned NumCases ) ;
278 FUNCTION: LLVMValueRef LLVMBuildInvoke
279 ( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs,
280   LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, c-string Name ) ;
281 FUNCTION: LLVMValueRef LLVMBuildUnwind
282 ( LLVMBuilderRef Builder ) ;
283 FUNCTION: LLVMValueRef LLVMBuildUnreachable
284 ( LLVMBuilderRef Builder ) ;
285
286 ! IB Add Case to Switch
287
288 FUNCTION: void LLVMAddCase
289 ( LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest ) ;
290
291 ! IB Arithmetic
292
293 FUNCTION: LLVMValueRef LLVMBuildAdd
294 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
295 FUNCTION: LLVMValueRef LLVMBuildSub
296 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
297 FUNCTION: LLVMValueRef LLVMBuildMul
298 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
299 FUNCTION: LLVMValueRef LLVMBuildUDiv
300 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
301 FUNCTION: LLVMValueRef LLVMBuildSDiv
302 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
303 FUNCTION: LLVMValueRef LLVMBuildFDiv
304 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
305 FUNCTION: LLVMValueRef LLVMBuildURem
306 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
307 FUNCTION: LLVMValueRef LLVMBuildSRem
308 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
309 FUNCTION: LLVMValueRef LLVMBuildFRem
310 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
311 FUNCTION: LLVMValueRef LLVMBuildShl
312 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
313 FUNCTION: LLVMValueRef LLVMBuildLShr
314 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
315 FUNCTION: LLVMValueRef LLVMBuildAShr
316 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
317 FUNCTION: LLVMValueRef LLVMBuildAnd
318 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
319 FUNCTION: LLVMValueRef LLVMBuildOr
320 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
321 FUNCTION: LLVMValueRef LLVMBuildXor
322 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
323 FUNCTION: LLVMValueRef LLVMBuildNeg
324 ( LLVMBuilderRef Builder, LLVMValueRef V, c-string Name ) ;
325 FUNCTION: LLVMValueRef LLVMBuildNot
326 ( LLVMBuilderRef Builder, LLVMValueRef V, c-string Name ) ;
327
328 ! IB Memory
329
330 FUNCTION: LLVMValueRef LLVMBuildMalloc
331 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, c-string Name ) ;
332 FUNCTION: LLVMValueRef LLVMBuildArrayMalloc
333 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, c-string Name ) ;
334 FUNCTION: LLVMValueRef LLVMBuildAlloca
335 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, c-string Name ) ;
336 FUNCTION: LLVMValueRef LLVMBuildArrayAlloca
337 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, c-string Name ) ;
338 FUNCTION: LLVMValueRef LLVMBuildFree
339 ( LLVMBuilderRef Builder, LLVMValueRef PointerVal ) ;
340 FUNCTION: LLVMValueRef LLVMBuildLoad
341 ( LLVMBuilderRef Builder, LLVMValueRef PointerVal, c-string Name ) ;
342 FUNCTION: LLVMValueRef LLVMBuildStore
343 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMValueRef Ptr ) ;
344 FUNCTION: LLVMValueRef LLVMBuildGEP
345 ( LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef* Indices,
346   unsigned NumIndices, c-string Name ) ;
347
348 ! IB Casts
349
350 FUNCTION: LLVMValueRef LLVMBuildTrunc
351 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
352 FUNCTION: LLVMValueRef LLVMBuildZExt
353 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
354 FUNCTION: LLVMValueRef LLVMBuildSExt
355 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
356 FUNCTION: LLVMValueRef LLVMBuildFPToUI
357 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
358 FUNCTION: LLVMValueRef LLVMBuildFPToSI
359 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
360 FUNCTION: LLVMValueRef LLVMBuildUIToFP
361 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
362 FUNCTION: LLVMValueRef LLVMBuildSIToFP
363 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
364 FUNCTION: LLVMValueRef LLVMBuildFPTrunc
365 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
366 FUNCTION: LLVMValueRef LLVMBuildFPExt
367 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
368 FUNCTION: LLVMValueRef LLVMBuildPtrToInt
369 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
370 FUNCTION: LLVMValueRef LLVMBuildIntToPtr
371 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
372 FUNCTION: LLVMValueRef LLVMBuildBitCast
373 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, c-string Name ) ;
374
375 ! IB Comparisons
376
377 FUNCTION: LLVMValueRef LLVMBuildICmp
378 ( LLVMBuilderRef Builder, LLVMIntPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
379 FUNCTION: LLVMValueRef LLVMBuildFCmp
380 ( LLVMBuilderRef Builder, LLVMRealPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) ;
381
382 ! IB Misc Instructions
383
384 FUNCTION: LLVMValueRef LLVMBuildPhi
385 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, c-string Name ) ;
386 FUNCTION: LLVMValueRef LLVMBuildCall
387 ( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs, c-string Name ) ;
388 FUNCTION: LLVMValueRef LLVMBuildSelect
389 ( LLVMBuilderRef Builder, LLVMValueRef If, LLVMValueRef Then, LLVMValueRef Else, c-string Name ) ;
390 FUNCTION: LLVMValueRef LLVMBuildVAArg
391 ( LLVMBuilderRef Builder, LLVMValueRef List, LLVMTypeRef Ty, c-string Name ) ;
392 FUNCTION: LLVMValueRef LLVMBuildExtractElement
393 ( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef Index, c-string Name ) ;
394 FUNCTION: LLVMValueRef LLVMBuildInsertElement
395 ( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef EltVal, LLVMValueRef Index, c-string Name ) ;
396 FUNCTION: LLVMValueRef LLVMBuildShuffleVector
397 ( LLVMBuilderRef Builder, LLVMValueRef V1, LLVMValueRef V2, LLVMValueRef Mask, c-string Name ) ;
398 FUNCTION: LLVMValueRef LLVMBuildExtractValue
399 ( LLVMBuilderRef Builder, LLVMValueRef AggVal, unsigned Index, c-string Name ) ;
400 FUNCTION: LLVMValueRef LLVMBuildInsertValue
401 ( LLVMBuilderRef Builder, LLVMValueRef AggVal, LLVMValueRef EltVal, unsigned Index, c-string Name ) ;
402
403 ! Memory Buffers/Bit Reader
404
405 FUNCTION: int LLVMCreateMemoryBufferWithContentsOfFile
406 ( c-string Path, LLVMMemoryBufferRef* OutMemBuf, c-string* OutMessage ) ;
407
408 FUNCTION: void LLVMDisposeMemoryBuffer ( LLVMMemoryBufferRef MemBuf ) ;
409
410 LIBRARY: LLVMBitReader
411
412 FUNCTION: int LLVMParseBitcode
413 ( LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule, c-string* OutMessage ) ;
414
415 FUNCTION: int LLVMGetBitcodeModuleProvider
416 ( LLVMMemoryBufferRef MemBuf, LLVMModuleProviderRef* OutMP, c-string* OutMessage ) ;