![]() | DebugFunctionType Class |
[This is preliminary documentation and is subject to change.]
Namespace: Llvm.NET.DebugInfo
public class DebugFunctionType : DebugType<IFunctionType, DISubroutineType>, IFunctionType, ITypeRef, IExtensiblePropertyContainer
The DebugFunctionType type exposes the following members.
Name | Description | |
---|---|---|
![]() | DebugFunctionType | Constructs a new DebugFunctionType |
Name | Description | |
---|---|---|
![]() | AddExtendedPropertyValue | (Inherited from DebugTypeTNative, TDebug.) |
![]() | CreateArrayType(UInt32) | (Inherited from DebugTypeTNative, TDebug.) |
![]() | CreateArrayType(NativeModule, UInt32, UInt32) | (Inherited from DebugTypeTNative, TDebug.) |
![]() | CreatePointerType | (Inherited from DebugTypeTNative, TDebug.) |
![]() | CreatePointerType(UInt32) | (Inherited from DebugTypeTNative, TDebug.) |
![]() | CreatePointerType(NativeModule, UInt32) | (Inherited from DebugTypeTNative, TDebug.) |
![]() | Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
![]() | GetHashCode | Serves as the default hash function. (Inherited from Object.) |
![]() | GetNullValue | (Inherited from DebugTypeTNative, TDebug.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
![]() | TryGetExtendedPropertyValueTProperty | (Inherited from DebugTypeTNative, TDebug.) |
Function signatures are unnamed interned types in LLVM. While there is usually a one to one mapping between an LLVM function signature type and the source language debug signature type that isn't always true. In particular, when passing data by value. In cases where the address of a by value structure is needed a common pattern is to use a pointer to the structure in the signature, then perform an Alloca + memcpy. The actual approach taken depends on the calling conventions of the target. In these cases you get an LLVM signature that doesn't match the source and could actually match another source function where a pointer to the structure is actually used in the source.
For example, the following two C language functions might use the same LLVM signature:
void foo(struct bar)
void foo2(struct bar*)
void (%struct.bar*)
This class is designed to provide mapping between the debug signature type and the underlying LLVM type
![]() |
---|
It is important to keep in mind that signatures are only concerned with types. That is, they do not include names of parameters. Parameter information is provided by CreateArgument(DIScope, String, DIFile, UInt32, DIType, Boolean, DebugInfoFlags, UInt16) and InsertDeclare Overload |