Op 15-10-2012 18:52, Greg Clayton schreef:
You can call:

SBType
SBValue::GetType();

SBType will describe the type itself. We recently added an enumeration call:

lldb::BasicType
SBType::GetBasicType();

This will return an enumeration that describes your type if is is a basic type 
(see the lldb::BasicType enumeration definition for details).


Cool. So I tried that and I get back a eBasicTypeBool for both types in the attached IR file. I emit it with DIBuilder and pass an DW_ATE_signed 32bits:

!9 = metadata !{i32 786468, null, metadata !"Integer", null, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [Integer] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]



Is there something special I have to do here? (Integer is the internal name for this type in my language)

; ModuleID = 'ConsoleApplication16'

%0 = type opaque
%struct.NSConstantString = type { i32*, i32, i8*, i64 }

@__CFConstantStringClassReference = external global [0 x i32]
@.str0 = linker_private constant [17 x i8] c"What the hell %d\00", align 1
@_unnamed_cfstring_1 = private constant %struct.NSConstantString { i32* 
getelementptr inbounds ([0 x i32]* @__CFConstantStringClassReference, i32 0, 
i32 0), i32 1992, i8* getelementptr inbounds ([17 x i8]* @.str0, i32 0, i32 0), 
i64 16 }, section "__DATA,__cfstring"
@"\01L_OBJC_IMAGE_INFO" = internal constant [2 x i32] [i32 0, i32 16], section 
"__DATA, __objc_imageinfo, regular, no_dead_strip"
@llvm.used = appending global [1 x i8*] [i8* bitcast ([2 x i32]* 
@"\01L_OBJC_IMAGE_INFO" to i8*)], section "llvm.metadata"

define i32 @main() uwtable {
  %1 = alloca i32
  %2 = alloca i32
  call void @llvm.dbg.declare(metadata !{i32* %1}, metadata !10), !dbg !13
  call void @llvm.dbg.declare(metadata !{i32* %2}, metadata !14), !dbg !13
  store i32 0, i32* %2, !dbg !13
  store i32 0, i32* %1, !dbg !15
  br label %3, !dbg !16

; <label>:3                                       ; preds = %8, %0
  %4 = load i32* %1, !dbg !16
  %5 = icmp slt i32 %4, 5, !dbg !16
  br i1 %5, label %8, label %6, !dbg !16

; <label>:6                                       ; preds = %3
  %7 = load i32* %2, !dbg !17
  ret i32 %7, !dbg !17

; <label>:8                                       ; preds = %3
  %9 = load i32* %1, !dbg !18
  call void (%0*, ...)* @NSLog(%0* bitcast (%struct.NSConstantString* 
@_unnamed_cfstring_1 to %0*), i32 %9), !dbg !18
  %10 = load i32* %1, !dbg !19
  %11 = add i32 %10, 1, !dbg !19
  store i32 %11, i32* %1, !dbg !19
  br label %3, !dbg !19
                                                  ; No predecessors!
  unreachable, !dbg !17
}

declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone

declare void @NSLog(%0*, ...)

!llvm.dbg.cu = !{!0}

!0 = metadata !{i32 786449, i32 0, i32 16, metadata !"Program.pas", metadata 
!"C:\5CUsers\5CCarlo\5Cdocuments\5Cvisual studio 
2012\5CProjects\5CConsoleApplication16\5CConsoleApplication16", metadata 
!"RemObjects Nougat (LLVM) 6.0.42.1102", i1 true, i1 false, metadata !"", i32 
2, metadata !1, metadata !1, metadata !3, metadata !1} ; [ DW_TAG_compile_unit 
] [C:\Users\Carlo\documents\visual studio 
2012\Projects\ConsoleApplication16\ConsoleApplication16/Program.pas] 
[DW_LANG_ObjC]
!1 = metadata !{metadata !2}
!2 = metadata !{i32 0}
!3 = metadata !{metadata !4}
!4 = metadata !{metadata !5}
!5 = metadata !{i32 786478, i32 0, metadata !6, metadata !"main", metadata 
!"main", metadata !"", metadata !6, i32 10, metadata !7, i1 true, i1 true, i32 
0, i32 0, null, i32 0, i1 false, i32 ()* @main, null, null, metadata !1, i32 
10} ; [ DW_TAG_subprogram ] [line 10] [local] [def] [main]
!6 = metadata !{i32 786473, metadata !"Program.pas", metadata 
!"C:\5CUsers\5CCarlo\5Cdocuments\5Cvisual studio 
2012\5CProjects\5CConsoleApplication16\5CConsoleApplication16", null} ; [ 
DW_TAG_file_type ]
!7 = metadata !{i32 786453, i32 0, metadata !"", i32 0, i32 0, i64 0, i64 0, 
i64 0, i32 0, null, metadata !8, i32 0, i32 0} ; [ DW_TAG_subroutine_type ] 
[line 0, size 0, align 0, offset 0] [from ]
!8 = metadata !{metadata !9}
!9 = metadata !{i32 786468, null, metadata !"Integer", null, i32 0, i64 32, i64 
32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [Integer] [line 0, size 32, 
align 32, offset 0, enc DW_ATE_signed]
!10 = metadata !{i32 786688, metadata !11, metadata !"i", metadata !6, i32 10, 
metadata !9, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [i] [line 10]
!11 = metadata !{i32 786443, metadata !12, i32 10, i32 1, metadata !6, i32 7} ; 
[ DW_TAG_lexical_block ] [C:\Users\Carlo\documents\visual studio 
2012\Projects\ConsoleApplication16\ConsoleApplication16/Program.pas]
!12 = metadata !{i32 786443, metadata !5, i32 10, i32 1, metadata !6, i32 6} ; 
[ DW_TAG_lexical_block ] [C:\Users\Carlo\documents\visual studio 
2012\Projects\ConsoleApplication16\ConsoleApplication16/Program.pas]
!13 = metadata !{i32 10, i32 1, metadata !11, null}
!14 = metadata !{i32 786688, metadata !11, metadata !"Result", metadata !6, i32 
10, metadata !9, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [Result] [line 10]
!15 = metadata !{i32 11, i32 7, metadata !11, null}
!16 = metadata !{i32 12, i32 3, metadata !11, null}
!17 = metadata !{i32 16, i32 1, metadata !11, null}
!18 = metadata !{i32 13, i32 5, metadata !11, null}
!19 = metadata !{i32 14, i32 5, metadata !11, null}
_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to