Interface IDebugType<TNative, TDebug>
Namespace: Ubiquity.NET.Llvm.DebugInfo
Assembly: Ubiquity.NET.Llvm.dll
Syntax
public interface IDebugType<out TNative, out TDebug> : ITypeRef, IExtensiblePropertyContainer where TNative : ITypeRef where TDebug : DIType
Type Parameters
TNative
Native LLVM type |
TDebug
Debug type description for the type |
Remarks
Primitive types and function signature types are all interned in LLVM, thus there won't be a strict one to one relationship between an LLVM type and corresponding language specific debug type. (e.g. unsigned char, char, byte and signed byte might all be 8 bit integer values as far as LLVM is concerned.) Also, when using the pointer+alloca+memcpy pattern to pass by value the actual source debug info type is different than the LLVM function signature. This interface and it's implementations are used to construct native type and debug info pairing to allow applications to maintain a link from their AST or IR types into the LLVM native type and debug information.
note
It is important to note that the relationship from the DIType to it's NativeType properties is strictly one way. That is, there is no way to take an arbitrary ITypeRef and re-associate it with the DIType or an implementation of this interface as there may be many such mappings to choose from.
Properties
DIType | Gets the debug information type this interface is associating with NativeType |
NativeType | Gets the LLVM NativeType this interface is associating with debug info in DIType |
Methods
CreateArrayType(BitcodeModule, UInt32, UInt32) | Creates a type defining an array of elements of this type |
CreatePointerType(BitcodeModule, UInt32) | Creates a pointer to this type for a given module and address space |