LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
In LLVM 3.9 some parameters to these functions were dropped. The DIBuilder interface
has been changed to reflect these changes (i.e., C functions no longer require dropped
argument). The LLVM C Extensions library can still be compiled against LLVM 3.8
(via #ifdef), but the API will be different. Also, the Smalltallks bindings will
make use of LLVM 3.9 interface. That said, LLVM C API Extensions library may still
be used by *other* projects on top of LLVM 3.8, though Smalltalk bindings require
LLVM 3.9 from now on.
"
Copyright (C) 2015-now Jan Vrany
This code is not an open-source (yet). You may use this code
for your own experiments and projects, given that:
* all modification to the code will be sent to the
original author for inclusion in future releases
* this is not used in any commercial software
This license is provisional and may (will) change in
a future.
"
"{ Package: 'jv:llvm_s' }"
"{ NameSpace: Smalltalk }"
Object subclass:#LLVMCEXT
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'LLVM-S-Internal'
!
!LLVMCEXT class methodsFor:'documentation'!
copyright
"
Copyright (C) 2015-now Jan Vrany
This code is not an open-source (yet). You may use this code
for your own experiments and projects, given that:
* all modification to the code will be sent to the
original author for inclusion in future releases
* this is not used in any commercial software
This license is provisional and may (will) change in
a future.
"
!
documentation
"
This class contains call out to LLVM C API extensions library
(which is part of llvm-s bindings).
This library exposes important LLVM C++ API tp C users, including:
* access to intrinsics
[author:]
Jan Vrany <jan.vrany@fit.cvut.cz>
[instance variables:]
[class variables:]
[see also:]
"
! !
!LLVMCEXT class methodsFor:'accessing'!
libraryName
| pkgDir |
pkgDir := Smalltalk getPackageDirectoryForPackage: #jv:llvm_s.
pkgDir isNil ifTrue:[
self error: 'Cannot find package directory for jv:llvm_c. Check #packagePath'.
].
OperatingSystem isUNIXlike ifTrue:[
^ (pkgDir / 'llvm_c_ext' / 'lib' / 'libLLVM-C-EXT.so') pathName
].
self error:'Unsupported operating system'
"Created: / 10-08-2015 / 16:58:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!LLVMCEXT class methodsFor:'primitives'!
AddFunctionAttr2: Fn _: PA
"@param Fn: LLVMValueRef
@param PA: uint64_t
@return: void
"
<cdecl: void "LLVMAddFunctionAttr2" ( LLVMValue uint64 ) >
self primitiveFailed
!
AddNamedMetadataOperand2: M _: name _: Val
"@param M: LLVMModuleRef
@param name: *const char
@param Val: LLVMMetadataRef
@return: void
"
<cdecl: void "LLVMAddNamedMetadataOperand2" ( LLVMModule charPointer LLVMMetadata ) >
self primitiveFailed
!
ConstantAsMetadata: Val
"@param Val: LLVMValueRef
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMConstantAsMetadata" ( LLVMValue ) >
self primitiveFailed
!
DIBuilderCreateArrayType: D _: SizeInBits _: AlignInBits _: ElementType _: Subscripts
"@param D: LLVMDIBuilderRef
@param SizeInBits: uint64_t
@param AlignInBits: uint64_t
@param ElementType: LLVMMetadataRef
@param Subscripts: LLVMMetadataRef
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateArrayType" ( LLVMDIBuilder uint64 uint64 LLVMMetadata LLVMMetadata ) >
self primitiveFailed
!
DIBuilderCreateAutoVariable: Dref _: Scope _: Name _: File _: Line _: Ty _: AlwaysPreserve _: Flags
"@param Dref: LLVMDIBuilderRef
@param Scope: LLVMMetadataRef
@param Name: *const char
@param File: LLVMMetadataRef
@param Line: unsigned int
@param Ty: LLVMMetadataRef
@param AlwaysPreserve: int
@param Flags: unsigned int
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateAutoVariable" ( LLVMDIBuilder LLVMMetadata charPointer LLVMMetadata uint LLVMMetadata int uint ) >
self primitiveFailed
!
DIBuilderCreateBasicType: D _: Name _: SizeInBits _: AlignInBits _: Encoding
"@param D: LLVMDIBuilderRef
@param Name: *const char
@param SizeInBits: uint64_t
@param AlignInBits: uint64_t
@param Encoding: unsigned int
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateBasicType" ( LLVMDIBuilder charPointer uint64 uint64 uint ) >
self primitiveFailed
!
DIBuilderCreateCompileUnit: D _: Language _: File _: Dir _: Producer _: Optimized _: Flags _: RuntimeVersion
"@param D: LLVMDIBuilderRef
@param Language: unsigned int
@param File: *const char
@param Dir: *const char
@param Producer: *const char
@param Optimized: int
@param Flags: *const char
@param RuntimeVersion: unsigned int
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateCompileUnit" ( LLVMDIBuilder uint charPointer charPointer charPointer int charPointer uint ) >
self primitiveFailed
!
DIBuilderCreateExpression: Dref _: Addr _: Length
"@param Dref: LLVMDIBuilderRef
@param Addr: *int64_t
@param Length: size_t
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateExpression" ( LLVMDIBuilder pointer long ) >
self primitiveFailed
!
DIBuilderCreateFile: D _: File _: Dir
"@param D: LLVMDIBuilderRef
@param File: *const char
@param Dir: *const char
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateFile" ( LLVMDIBuilder charPointer charPointer ) >
self primitiveFailed
!
DIBuilderCreateFunction: D _: Scope _: Name _: LinkageName _: File _: Line _: CompositeType _: IsLocalToUnit _: IsDefinition _: ScopeLine _: Flags _: IsOptimized _: Function
"@param D: LLVMDIBuilderRef
@param Scope: LLVMMetadataRef
@param Name: *const char
@param LinkageName: *const char
@param File: LLVMMetadataRef
@param Line: unsigned int
@param CompositeType: LLVMMetadataRef
@param IsLocalToUnit: int
@param IsDefinition: int
@param ScopeLine: unsigned int
@param Flags: unsigned int
@param IsOptimized: int
@param Function: LLVMValueRef
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateFunction" ( LLVMDIBuilder LLVMMetadata charPointer charPointer LLVMMetadata uint LLVMMetadata int int uint uint int LLVMValue ) >
self primitiveFailed
!
DIBuilderCreateLexicalBlock: D _: Scope _: File _: Line _: Column
"@param D: LLVMDIBuilderRef
@param Scope: LLVMMetadataRef
@param File: LLVMMetadataRef
@param Line: unsigned int
@param Column: unsigned int
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateLexicalBlock" ( LLVMDIBuilder LLVMMetadata LLVMMetadata uint uint ) >
self primitiveFailed
!
DIBuilderCreateLexicalBlockFile: D _: Scope _: File _: Discriminator
"@param D: LLVMDIBuilderRef
@param Scope: LLVMMetadataRef
@param File: LLVMMetadataRef
@param Discriminator: unsigned int
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateLexicalBlockFile" ( LLVMDIBuilder LLVMMetadata LLVMMetadata uint ) >
self primitiveFailed
!
DIBuilderCreateMemberType: D _: Scope _: Name _: File _: Line _: SizeInBits _: AlignInBits _: OffsetInBits _: Flags _: Ty
"@param D: LLVMDIBuilderRef
@param Scope: LLVMMetadataRef
@param Name: *const char
@param File: LLVMMetadataRef
@param Line: unsigned int
@param SizeInBits: uint64_t
@param AlignInBits: uint64_t
@param OffsetInBits: uint64_t
@param Flags: unsigned int
@param Ty: LLVMMetadataRef
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateMemberType" ( LLVMDIBuilder LLVMMetadata charPointer LLVMMetadata uint uint64 uint64 uint64 uint LLVMMetadata ) >
self primitiveFailed
!
DIBuilderCreateParameterVariable: Dref _: Scope _: Name _: File _: Line _: Ty _: AlwaysPreserve _: Flags _: ArgNo
"@param Dref: LLVMDIBuilderRef
@param Scope: LLVMMetadataRef
@param Name: *const char
@param File: LLVMMetadataRef
@param Line: unsigned int
@param Ty: LLVMMetadataRef
@param AlwaysPreserve: int
@param Flags: unsigned int
@param ArgNo: unsigned int
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateParameterVariable" ( LLVMDIBuilder LLVMMetadata charPointer LLVMMetadata uint LLVMMetadata int uint uint ) >
self primitiveFailed
!
DIBuilderCreatePointerType: D _: PointeeType _: SizeInBits _: AlignInBits _: Name
"@param D: LLVMDIBuilderRef
@param PointeeType: LLVMMetadataRef
@param SizeInBits: uint64_t
@param AlignInBits: uint64_t
@param Name: *const char
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreatePointerType" ( LLVMDIBuilder LLVMMetadata uint64 uint64 charPointer ) >
self primitiveFailed
!
DIBuilderCreateReplaceableCompositeType: D _: Tag _: Name _: Scope _: File _: Line _: RuntimeLang _: SizeInBits _: AlignInBits _: Flags
"@param D: LLVMDIBuilderRef
@param Tag: unsigned int
@param Name: *const char
@param Scope: LLVMMetadataRef
@param File: LLVMMetadataRef
@param Line: unsigned int
@param RuntimeLang: unsigned int
@param SizeInBits: uint64_t
@param AlignInBits: uint64_t
@param Flags: unsigned int
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateReplaceableCompositeType" ( LLVMDIBuilder uint charPointer LLVMMetadata LLVMMetadata uint uint uint64 uint64 uint ) >
self primitiveFailed
!
DIBuilderCreateStructType: D _: Scope _: Name _: File _: Line _: SizeInBits _: AlignInBits _: Flags _: DerivedFrom _: ElementTypes
"@param D: LLVMDIBuilderRef
@param Scope: LLVMMetadataRef
@param Name: *const char
@param File: LLVMMetadataRef
@param Line: unsigned int
@param SizeInBits: uint64_t
@param AlignInBits: uint64_t
@param Flags: unsigned int
@param DerivedFrom: LLVMMetadataRef
@param ElementTypes: LLVMMetadataRef
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateStructType" ( LLVMDIBuilder LLVMMetadata charPointer LLVMMetadata uint uint64 uint64 uint LLVMMetadata LLVMMetadata ) >
self primitiveFailed
!
DIBuilderCreateSubroutineType: D _: File _: ParameterTypes
"@param D: LLVMDIBuilderRef
@param File: LLVMMetadataRef
@param ParameterTypes: LLVMMetadataRef
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateSubroutineType" ( LLVMDIBuilder LLVMMetadata LLVMMetadata ) >
self primitiveFailed
!
DIBuilderCreateTypedef: D _: Ty _: Name _: File _: Line _: Context
"@param D: LLVMDIBuilderRef
@param Ty: LLVMMetadataRef
@param Name: *const char
@param File: LLVMMetadataRef
@param Line: unsigned int
@param Context: LLVMMetadataRef
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderCreateTypedef" ( LLVMDIBuilder LLVMMetadata charPointer LLVMMetadata uint LLVMMetadata ) >
self primitiveFailed
!
DIBuilderDestroy: d
"@param d: LLVMDIBuilderRef
@return: void
"
<cdecl: void "LLVMDIBuilderDestroy" ( LLVMDIBuilder ) >
self primitiveFailed
!
DIBuilderFinalize: d
"@param d: LLVMDIBuilderRef
@return: void
"
<cdecl: void "LLVMDIBuilderFinalize" ( LLVMDIBuilder ) >
self primitiveFailed
!
DIBuilderGetOrCreateArray: D _: Data _: Length
"@param D: LLVMDIBuilderRef
@param Data: *LLVMMetadataRef
@param Length: size_t
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderGetOrCreateArray" ( LLVMDIBuilder pointer long ) >
self primitiveFailed
!
DIBuilderGetOrCreateSubrange: D _: Lo _: Count
"@param D: LLVMDIBuilderRef
@param Lo: int64_t
@param Count: int64_t
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderGetOrCreateSubrange" ( LLVMDIBuilder sint64 sint64 ) >
self primitiveFailed
!
DIBuilderGetOrCreateTypeArray: D _: Data _: Length
"@param D: LLVMDIBuilderRef
@param Data: *LLVMMetadataRef
@param Length: size_t
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMDIBuilderGetOrCreateTypeArray" ( LLVMDIBuilder pointer long ) >
self primitiveFailed
!
DIBuilderInsertDeclareAtEnd: D _: Storage _: VarInfo _: Expr _: Location _: Block
"@param D: LLVMDIBuilderRef
@param Storage: LLVMValueRef
@param VarInfo: LLVMMetadataRef
@param Expr: LLVMMetadataRef
@param Location: LLVMMetadataRef
@param Block: LLVMBasicBlockRef
@return: LLVMValueRef
"
<cdecl: LLVMValue "LLVMDIBuilderInsertDeclareAtEnd" ( LLVMDIBuilder LLVMValue LLVMMetadata LLVMMetadata LLVMMetadata pointer ) >
self primitiveFailed
!
DIBuilderInsertValueAtEnd: D _: Val _: Offset _: VarInfo _: Expr _: Location _: Block
"@param D: LLVMDIBuilderRef
@param Val: LLVMValueRef
@param Offset: uint64_t
@param VarInfo: LLVMMetadataRef
@param Expr: LLVMMetadataRef
@param Location: LLVMMetadataRef
@param Block: LLVMBasicBlockRef
@return: LLVMValueRef
"
<cdecl: LLVMValue "LLVMDIBuilderInsertValueAtEnd" ( LLVMDIBuilder LLVMValue uint64 LLVMMetadata LLVMMetadata LLVMMetadata pointer ) >
self primitiveFailed
!
GetCurrentDebugLocation2: Bref
"@param Bref: LLVMBuilderRef
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMGetCurrentDebugLocation2" ( pointer ) >
self primitiveFailed
!
GetFunctionAttr2: Fn
"@param Fn: LLVMValueRef
@return: uint64_t
"
<cdecl: uint64 "LLVMGetFunctionAttr2" ( LLVMValue ) >
self primitiveFailed
!
GetIntrinsicByName: mod _: name _: count _: types
"@param mod: LLVMModuleRef
@param name: *const char
@param count: const int
@param types: *const LLVMTypeRef
@return: LLVMValueRef
"
<cdecl: LLVMValue "LLVMGetIntrinsicByName" ( LLVMModule charPointer int pointer ) >
self primitiveFailed
!
GetMedadataKind: MD
"@param MD: LLVMMetadataRef
@return: LLVMMetadataKind
"
<cdecl: int32 "LLVMGetMetadataKind" ( LLVMMetadata ) >
self primitiveFailed
!
MDNode2: C _: MDs _: Count
"@param C: LLVMContextRef
@param MDs: *LLVMMetadataRef
@param Count: unsigned int
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMMDNode2" ( LLVMContext pointer uint ) >
self primitiveFailed
!
MDString2: C _: Str _: SLen
"@param C: LLVMContextRef
@param Str: *const char
@param SLen: unsigned int
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMMDString2" ( LLVMContext charPointer uint ) >
self primitiveFailed
!
MetadataAsValue: MD
"@param MD: LLVMMetadataRef
@return: LLVMValueRef
"
<cdecl: LLVMValue "LLVMMetadataAsValue" ( LLVMMetadata ) >
self primitiveFailed
!
MetadataAsValueInContext: C _: MD
"@param C: LLVMContextRef
@param MD: LLVMMetadataRef
@return: LLVMValueRef
"
<cdecl: LLVMValue "LLVMMetadataAsValueInContext" ( LLVMContext LLVMMetadata ) >
self primitiveFailed
!
MetadataReplaceAllUsesWith: MD _: New
"@param MD: LLVMMetadataRef
@param New: LLVMMetadataRef
@return: void
"
<cdecl: void "LLVMMetadataReplaceAllUsesWith" ( LLVMMetadata LLVMMetadata ) >
self primitiveFailed
!
ModuleAddModuleFlag: M _: Behavior _: Key _: Val
"@param M: LLVMModuleRef
@param Behavior: LLVMModuleFlagBehavior
@param Key: *const char
@param Val: LLVMMetadataRef
@return: void
"
<cdecl: void "LLVMModuleAddModuleFlag" ( LLVMModule int32 charPointer LLVMMetadata ) >
self primitiveFailed
!
NewDIBuilder: m
"@param m: LLVMModuleRef
@return: LLVMDIBuilderRef
"
<cdecl: LLVMDIBuilder "LLVMNewDIBuilder" ( LLVMModule ) >
self primitiveFailed
!
RemoveFunctionAttr2: Fn _: PA
"@param Fn: LLVMValueRef
@param PA: uint64_t
@return: void
"
<cdecl: void "LLVMRemoveFunctionAttr2" ( LLVMValue uint64 ) >
self primitiveFailed
!
SetCurrentDebugLocation2: Bref _: Line _: Col _: Scope _: InlinedAt
"@param Bref: LLVMBuilderRef
@param Line: unsigned int
@param Col: unsigned int
@param Scope: LLVMMetadataRef
@param InlinedAt: LLVMMetadataRef
@return: void
"
<cdecl: void "LLVMSetCurrentDebugLocation2" ( pointer uint uint LLVMMetadata LLVMMetadata ) >
self primitiveFailed
!
SetMetadata2: Inst _: KindID _: MD
"@param Inst: LLVMValueRef
@param KindID: unsigned int
@param MD: LLVMMetadataRef
@return: void
"
<cdecl: void "LLVMSetMetadata2" ( LLVMValue uint LLVMMetadata ) >
self primitiveFailed
!
TemporaryMDNode: C _: MDs _: Count
"@param C: LLVMContextRef
@param MDs: *LLVMMetadataRef
@param Count: unsigned int
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMTemporaryMDNode" ( LLVMContext pointer uint ) >
self primitiveFailed
!
ValueAsMetadata: Value
"@param Value: LLVMValueRef
@return: LLVMMetadataRef
"
<cdecl: LLVMMetadata "LLVMValueAsMetadata" ( LLVMValue ) >
self primitiveFailed
!
ValueAsSInt64: Value
"@param Value: LLVMValueRef
@return: int64_t
"
<cdecl: sint64 "LLVMValueAsSInt64" ( LLVMValue ) >
self primitiveFailed
!
ValueAsUInt64: Value
"@param Value: LLVMValueRef
@return: uint64_t
"
<cdecl: uint64 "LLVMValueAsUInt64" ( LLVMValue ) >
self primitiveFailed
! !
!LLVMCEXT class methodsFor:'documentation'!
version
^ 'Path: jv/llvm_s/LLVMCEXT.st, Version: 1.0, User: jv, Time: 2015-08-10T19:13:47.892+01'
!
version_HG
^ 'Path: jv/llvm_s/LLVMCEXT.st, Version: 1.0, User: jv, Time: 2015-08-10T19:13:47.892+01'
! !