In my llvm emitted code (see IR attached) when I debug I get odd stack frame listings.

If I set a breakpoint anywhere in "main" the stack frame contains a faulty DoIt entry.
[0]
  FunctionName: "Main"
  FuncType: set (has the proper sig for main)
  Position: !dbg !19 (call to DoIt)
[1]
  FunctionName: "DoIt"
  FuncType: NULL
  Position: !dbg !18 (ret)
[2]
  FuncName: "start"
  FuncType: NULL
  Position: not set

At this point there's nothing in the stack frame that calls DoIt yet. If at this point I step into "DoIt" it inserts a proper DoIt entry in the list:

[0]
  FunctionName: "DoIt"
  FuncType: set (proper sig for DoIt)
  Position: !dbg !16 (alloca)
[1]
  FunctionName: "Main"
  FuncType: set (has the proper sig for main)
  Position: !dbg !19 (call to DoIt)
[2]
  FunctionName: "DoIt"
  FuncType: NULL
  Position: !dbg !18 (ret)
[3]
  FuncName: "start"
  FuncType: NULL
  Position: not set

but the old one is still there. Where does this come from?
; ModuleID = 'ConsoleApplication18'

@.str0 = linker_private constant [28 x i8] c"The magic happens here. %d\0A\00", 
align 1
@"\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 @DoIt(i32, i32) uwtable {
  %3 = alloca i32
  store i32 %0, i32* %3
  %4 = alloca i32
  store i32 %1, i32* %4
  %5 = alloca i32
  call void @llvm.dbg.declare(metadata !{i32* %5}, metadata !13), !dbg !16
  store i32 0, i32* %5, !dbg !16
  %6 = load i32* %3, !dbg !17
  %7 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([28 x i8]* 
@.str0, i32 0, i32 0), i32 %6), !dbg !17
  %8 = load i32* %5, !dbg !18
  ret i32 %8, !dbg !18
                                                  ; No predecessors!
  unreachable, !dbg !18
}

define void @main() uwtable {
  %1 = call i32 @DoIt(i32 15, i32 12), !dbg !19
  ret void, !dbg !21
                                                  ; No predecessors!
  unreachable, !dbg !21
}

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

declare i32 @printf(i8*, ...)

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

!0 = metadata !{i32 786449, i32 0, i32 16, metadata !"Program.pas", metadata 
!"C:\5CUsers\5CCarlo\5CDocuments\5CVisual Studio 
2012\5CProjects\5CConsoleApplication18\5CConsoleApplication18", metadata 
!"RemObjects Nougat (LLVM) 6.0.42.1108", 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\ConsoleApplication18\ConsoleApplication18/Program.pas] 
[DW_LANG_ObjC]
!1 = metadata !{metadata !2}
!2 = metadata !{i32 0}
!3 = metadata !{metadata !4}
!4 = metadata !{metadata !5, metadata !10}
!5 = metadata !{i32 786478, i32 0, metadata !6, metadata !"DoIt", metadata 
!"DoIt", metadata !"", metadata !6, i32 13, metadata !7, i1 true, i1 true, i32 
0, i32 0, null, i32 0, i1 false, i32 (i32, i32)* @DoIt, null, null, metadata 
!1, i32 13} ; [ DW_TAG_subprogram ] [line 13] [local] [def] [DoIt]
!6 = metadata !{i32 786473, metadata !"Program.pas", metadata 
!"C:\5CUsers\5CCarlo\5CDocuments\5CVisual Studio 
2012\5CProjects\5CConsoleApplication18\5CConsoleApplication18", 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 786478, i32 0, metadata !6, metadata !"main", metadata 
!"main", metadata !"", metadata !6, i32 24, metadata !11, i1 true, i1 true, i32 
0, i32 0, null, i32 0, i1 false, void ()* @main, null, null, metadata !1, i32 
24} ; [ DW_TAG_subprogram ] [line 24] [local] [def] [main]
!11 = metadata !{i32 786453, i32 0, metadata !"", i32 0, i32 0, i64 0, i64 0, 
i64 0, i32 0, null, metadata !12, i32 0, i32 0} ; [ DW_TAG_subroutine_type ] 
[line 0, size 0, align 0, offset 0] [from ]
!12 = metadata !{null}
!13 = metadata !{i32 786688, metadata !14, metadata !"Result", metadata !6, i32 
14, metadata !9, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [Result] [line 14]
!14 = metadata !{i32 786443, metadata !15, i32 14, i32 1, metadata !6, i32 25} 
; [ DW_TAG_lexical_block ] [C:\Users\Carlo\Documents\Visual Studio 
2012\Projects\ConsoleApplication18\ConsoleApplication18/Program.pas]
!15 = metadata !{i32 786443, metadata !5, i32 13, i32 1, metadata !6, i32 24} ; 
[ DW_TAG_lexical_block ] [C:\Users\Carlo\Documents\Visual Studio 
2012\Projects\ConsoleApplication18\ConsoleApplication18/Program.pas]
!16 = metadata !{i32 14, i32 1, metadata !14, null}
!17 = metadata !{i32 19, i32 5, metadata !14, null}
!18 = metadata !{i32 22, i32 1, metadata !14, null}
!19 = metadata !{i32 26, i32 3, metadata !20, null}
!20 = metadata !{i32 786443, metadata !10, i32 24, i32 1, metadata !6, i32 26} 
; [ DW_TAG_lexical_block ] [C:\Users\Carlo\Documents\Visual Studio 
2012\Projects\ConsoleApplication18\ConsoleApplication18/Program.pas]
!21 = metadata !{i32 27, i32 1, metadata !20, null}
_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to