Click or drag to resize
Llvm.NET LogoDebugFunctionType Class

[This is preliminary documentation and is subject to change.]

This class provides debug information binding for an IFunctionType and a DISubroutineType
Inheritance Hierarchy
SystemObject
  Llvm.NET.DebugInfoDebugTypeIFunctionType, DISubroutineType
    Llvm.NET.DebugInfoDebugFunctionType

Namespace:  Llvm.NET.DebugInfo
Assembly:  Llvm.NET (in Llvm.NET.dll) Version: 3.8.6158
Syntax
C#
public class DebugFunctionType : DebugType<IFunctionType, DISubroutineType>, 
	IFunctionType, ITypeRef, IExtensiblePropertyContainer

The DebugFunctionType type exposes the following members.

Constructors
  NameDescription
Public methodDebugFunctionType
Constructs a new DebugFunctionType
Top
Properties
  NameDescription
Public propertyContext (Inherited from DebugTypeTNative, TDebug.)
Public propertyDIType (Inherited from DebugTypeTNative, TDebug.)
Public propertyIntegerBitWidth (Inherited from DebugTypeTNative, TDebug.)
Public propertyIsDouble (Inherited from DebugTypeTNative, TDebug.)
Public propertyIsFloat (Inherited from DebugTypeTNative, TDebug.)
Public propertyIsFloatingPoint (Inherited from DebugTypeTNative, TDebug.)
Public propertyIsInteger (Inherited from DebugTypeTNative, TDebug.)
Public propertyIsPointer (Inherited from DebugTypeTNative, TDebug.)
Public propertyIsPointerPointer (Inherited from DebugTypeTNative, TDebug.)
Public propertyIsSequence (Inherited from DebugTypeTNative, TDebug.)
Public propertyIsSized (Inherited from DebugTypeTNative, TDebug.)
Public propertyIsStruct (Inherited from DebugTypeTNative, TDebug.)
Public propertyIsVarArg
Flag to indicate if this signature is for a variadic function
Public propertyIsVoid (Inherited from DebugTypeTNative, TDebug.)
Public propertyKind (Inherited from DebugTypeTNative, TDebug.)
Public propertyNativeType (Inherited from DebugTypeTNative, TDebug.)
Public propertyParameterTypes
Collection of types of the parameters for the function
Public propertyReturnType
Return type of the function
Public propertyTypeHandle (Inherited from DebugTypeTNative, TDebug.)
Top
Methods
  NameDescription
Public methodAddExtendedPropertyValue (Inherited from DebugTypeTNative, TDebug.)
Public methodCreateArrayType(UInt32) (Inherited from DebugTypeTNative, TDebug.)
Public methodCreateArrayType(NativeModule, UInt32, UInt32) (Inherited from DebugTypeTNative, TDebug.)
Public methodCreatePointerType (Inherited from DebugTypeTNative, TDebug.)
Public methodCreatePointerType(UInt32) (Inherited from DebugTypeTNative, TDebug.)
Public methodCreatePointerType(NativeModule, UInt32) (Inherited from DebugTypeTNative, TDebug.)
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetNullValue (Inherited from DebugTypeTNative, TDebug.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Public methodTryGetExtendedPropertyValueTProperty (Inherited from DebugTypeTNative, TDebug.)
Top
Remarks

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*)
Implementing both of those might be done in LLVM with a single signature:
void (%struct.bar*)

This class is designed to provide mapping between the debug signature type and the underlying LLVM type

Note Note
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
See Also