示例#1
0
 public unsafe static DIDescriptor DIBuilderGetOrCreateSubrange(DIBuilderRef Builder, long Lo, long Count) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderGetOrCreateSubrange(Builder.Value, Lo, Count));
   return ret;
 }
示例#2
0
 public unsafe static string DIPrintDescriptorToString(DIDescriptor Value) {
   string ret = LLVMPINVOKE.DIPrintDescriptorToString(Value.Value);
   return ret;
 }
示例#3
0
        private void EmitDebugVariable(FunctionCompilerContext functionContext, SequencePoint sequencePoint, DIDescriptor generatedScope, StackValue variable, DW_TAG dwarfType, string variableName, int argIndex = 0)
        {
            var debugType = CreateDebugType(variable.Type);

            // Process fields and other dependent debug types
            ProcessMissingDebugTypes();

            // Read it again in case it was mutated
            debugType = CreateDebugType(variable.Type);

            // TODO: Detect where variable is actually declared (first use of local?)
            var debugLocalVariable = LLVM.DIBuilderCreateLocalVariable(debugBuilder,
                                                                       (uint)dwarfType,
                                                                       generatedScope, variableName, functionContext.DebugFile, sequencePoint != null ? (uint)sequencePoint.StartLine : 0, debugType,
                                                                       true, 0, (uint)argIndex);

            var debugVariableDeclare = LLVM.DIBuilderInsertDeclareAtEnd(debugBuilder, variable.Value, debugLocalVariable, debugEmptyExpression,
                                                                        LLVM.GetInsertBlock(builder));

            LLVM.SetInstDebugLocation(builder, debugVariableDeclare);
        }
示例#4
0
 public unsafe static DIDescriptor DIBuilderCreateTemplateTypeParameter(DIBuilderRef Builder, DIDescriptor Scope, string Name, DIDescriptor Ty, DIDescriptor File, uint LineNo, uint ColumnNo) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateTemplateTypeParameter(Builder.Value, Scope.Value, Name, Ty.Value, File.Value, LineNo, ColumnNo));
   return ret;
 }
示例#5
0
 public unsafe static void DICompositeTypeSetTypeArray(DIBuilderRef Builder, out DIDescriptor CompositeType, DIDescriptor TypeArray) {
   LLVMPINVOKE.DICompositeTypeSetTypeArray(Builder.Value, out CompositeType.Value, TypeArray.Value);
 }
示例#6
0
 public unsafe static ValueRef DIBuilderInsertDeclareBefore(DIBuilderRef Builder, ValueRef Val, DIDescriptor VarInfo, DIDescriptor Expr, ValueRef InsertBefore) {
   ValueRef ret = new ValueRef(LLVMPINVOKE.DIBuilderInsertDeclareBefore(Builder.Value, Val.Value, VarInfo.Value, Expr.Value, InsertBefore.Value));
   return ret;
 }
示例#7
0
 public unsafe static DIDescriptor DIBuilderCreateEnumerationType(DIBuilderRef Builder, DIDescriptor Scope, string Name, DIDescriptor File, uint LineNumber, ulong SizeInBits, ulong AlignInBits, DIDescriptor Elements, DIDescriptor ClassType) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateEnumerationType(Builder.Value, Scope.Value, Name, File.Value, LineNumber, SizeInBits, AlignInBits, Elements.Value, ClassType.Value));
   return ret;
 }
示例#8
0
 public unsafe static DIDescriptor DIBuilderCreateForwardDecl(DIBuilderRef Builder, uint Tag, string Name, DIDescriptor Scope, DIDescriptor File, uint Line, uint RuntimeLang, ulong SizeInBits, ulong AlignInBits, string UniqueId) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateForwardDecl(Builder.Value, Tag, Name, Scope.Value, File.Value, Line, RuntimeLang, SizeInBits, AlignInBits, UniqueId));
   return ret;
 }
示例#9
0
 public unsafe static DIDescriptor DIBuilderCreateClassType(DIBuilderRef Builder, DIDescriptor Scope, string Name, DIDescriptor File, uint LineNumber, ulong SizeInBits, ulong AlignInBits, ulong OffsetInBits, uint Flags, DIDescriptor DerivedFrom, DIDescriptor Elements, DIDescriptor VTableHolder, DIDescriptor TemplateParms, string UniqueId) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateClassType(Builder.Value, Scope.Value, Name, File.Value, LineNumber, SizeInBits, AlignInBits, OffsetInBits, Flags, DerivedFrom.Value, Elements.Value, VTableHolder.Value, TemplateParms.Value, UniqueId));
   return ret;
 }
示例#10
0
 public unsafe static DIDescriptor DIBuilderCreateBasicType(DIBuilderRef Builder, string Name, ulong SizeInBits, ulong AlignInBits, uint Encoding) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateBasicType(Builder.Value, Name, SizeInBits, AlignInBits, Encoding));
   return ret;
 }
示例#11
0
 public unsafe static DIDescriptor DIBuilderCreatePointerType(DIBuilderRef Builder, DIDescriptor PointeeTy, ulong SizeInBits, ulong AlignInBits, string Name) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreatePointerType(Builder.Value, PointeeTy.Value, SizeInBits, AlignInBits, Name));
   return ret;
 }
示例#12
0
 public unsafe static DIDescriptor DIBuilderCreateFunction(DIBuilderRef Builder, DIDescriptor Scope, string Name, string LinkageName, DIDescriptor File, uint LineNo, DIDescriptor Ty, bool isLocalToUnit, bool isDefinition, uint ScopeLine, uint Flags, bool isOptimized, ValueRef Fn, DIDescriptor TParam, DIDescriptor Decl) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateFunction(Builder.Value, Scope.Value, Name, LinkageName, File.Value, LineNo, Ty.Value, isLocalToUnit, isDefinition, ScopeLine, Flags, isOptimized, Fn.Value, TParam.Value, Decl.Value));
   return ret;
 }
示例#13
0
 public unsafe static DIDescriptor DIBuilderCreateSubroutineType(DIBuilderRef Builder, DIDescriptor File, DIDescriptor ParameterTypes) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateSubroutineType(Builder.Value, File.Value, ParameterTypes.Value));
   return ret;
 }
示例#14
0
 public unsafe static DIDescriptor DIBuilderCreateFile(DIBuilderRef Builder, string Filename, string Directory) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateFile(Builder.Value, Filename, Directory));
   return ret;
 }
示例#15
0
 public unsafe static DIDescriptor DIBuilderGetOrCreateArray(DIBuilderRef Builder, DIDescriptor[] Ptr) {
   fixed (DIDescriptor* swig_ptrTo_Ptr = Ptr)
   {
     DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderGetOrCreateArray(Builder.Value, (System.IntPtr)swig_ptrTo_Ptr, (uint)Ptr.Length));
     return ret;
   }
 }
示例#16
0
 public unsafe static DIDescriptor DIBuilderCreateMemberType(DIBuilderRef Builder, DIDescriptor Scope, string Name, DIDescriptor File, uint LineNo, ulong SizeInBits, ulong AlignInBits, ulong OffsetInBits, uint Flags, DIDescriptor Ty) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateMemberType(Builder.Value, Scope.Value, Name, File.Value, LineNo, SizeInBits, AlignInBits, OffsetInBits, Flags, Ty.Value));
   return ret;
 }
示例#17
0
 public unsafe static ValueRef DIBuilderInsertDeclareAtEnd(DIBuilderRef Builder, ValueRef Val, DIDescriptor VarInfo, DIDescriptor Expr, BasicBlockRef InsertAtEnd) {
   ValueRef ret = new ValueRef(LLVMPINVOKE.DIBuilderInsertDeclareAtEnd(Builder.Value, Val.Value, VarInfo.Value, Expr.Value, InsertAtEnd.Value));
   return ret;
 }
示例#18
0
 public unsafe static DIDescriptor DIBuilderCreateLexicalBlock(DIBuilderRef Builder, DIDescriptor Scope, DIDescriptor File, uint Line, uint Col, uint Discriminator) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateLexicalBlock(Builder.Value, Scope.Value, File.Value, Line, Col, Discriminator));
   return ret;
 }
示例#19
0
 public unsafe static DIDescriptor DIBuilderCreateEnumerator(DIBuilderRef Builder, string Name, ulong Val) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateEnumerator(Builder.Value, Name, Val));
   return ret;
 }
示例#20
0
 public unsafe static DIDescriptor DIBuilderCreateExpression(DIBuilderRef Builder, long[] Addresses) {
   fixed (long* swig_ptrTo_Addresses = Addresses)
   {
     DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateExpression(Builder.Value, (System.IntPtr)swig_ptrTo_Addresses, (uint)Addresses.Length));
     return ret;
   }
 }
示例#21
0
 public unsafe static DIDescriptor DIBuilderCreateUnionType(DIBuilderRef Builder, DIDescriptor Scope, string Name, DIDescriptor File, uint LineNumber, ulong SizeInBits, ulong AlignInBits, uint Flags, DIDescriptor Elements, uint RunTimeLang, string UniqueId) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateUnionType(Builder.Value, Scope.Value, Name, File.Value, LineNumber, SizeInBits, AlignInBits, Flags, Elements.Value, RunTimeLang, UniqueId));
   return ret;
 }
示例#22
0
 public unsafe static DIDescriptor DIBuilderCreateGlobalVariable(DIBuilderRef Builder, DIDescriptor Context, string Name, string LinkageName, DIDescriptor File, uint LineNo, DIDescriptor Ty, bool isLocalToUnit, ValueRef Val, DIDescriptor Decl) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateGlobalVariable(Builder.Value, Context.Value, Name, LinkageName, File.Value, LineNo, Ty.Value, isLocalToUnit, Val.Value, Decl.Value));
   return ret;
 }
示例#23
0
 public unsafe static DIDescriptor DIBuilderCreateNameSpace(DIBuilderRef Builder, DIDescriptor Scope, string Name, DIDescriptor File, uint LineNo) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateNameSpace(Builder.Value, Scope.Value, Name, File.Value, LineNo));
   return ret;
 }
示例#24
0
 public unsafe static DIDescriptor DIBuilderCreateLocalVariable(DIBuilderRef Builder, uint Tag, DIDescriptor Scope, string Name, DIDescriptor File, uint LineNo, DIDescriptor Ty, bool AlwaysPreserve, uint Flags, uint ArgNo) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateLocalVariable(Builder.Value, Tag, Scope.Value, Name, File.Value, LineNo, Ty.Value, AlwaysPreserve, Flags, ArgNo));
   return ret;
 }
示例#25
0
 public unsafe static ValueRef DIMetadataAsValue(DIDescriptor Value) {
   ValueRef ret = new ValueRef(LLVMPINVOKE.DIMetadataAsValue(Value.Value));
   return ret;
 }
示例#26
0
 public unsafe static DIDescriptor DIBuilderCreateVectorType(DIBuilderRef Builder, ulong Size, ulong AlignInBits, DIDescriptor Ty, DIDescriptor Subscripts) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DIBuilderCreateVectorType(Builder.Value, Size, AlignInBits, Ty.Value, Subscripts.Value));
   return ret;
 }
示例#27
0
 public unsafe static DIDescriptor DICreateDebugLocation(uint Line, uint Col, DIDescriptor Scope, DIDescriptor InlinedAt) {
   DIDescriptor ret = new DIDescriptor(LLVMPINVOKE.DICreateDebugLocation(Line, Col, Scope.Value, InlinedAt.Value));
   return ret;
 }
示例#28
0
 private void InitializeDebug()
 {
     debugBuilder         = LLVM.DIBuilderCreate(module);
     debugEmptyExpression = LLVM.DIBuilderCreateExpression(debugBuilder, new long[0]);
 }