https://llvm.org/bugs/show_bug.cgi?id=23076
Bug ID: 23076
Summary: line number info causes erratic stepping in gdb
Product: clang
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: LLVM Codegen
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected]
Classification: Unclassified
int a = 1, b;
int main(void)
{
if (a
&&
b)
return 1;
return 0;
}
//*****************
When compiled with -g, the branch instructions that are generated at the end of
the basic blocks that evaluate the conditions get line number entries that
differ from those of the conditions, causing the debugger to skip back to the
if statement's line during single stepping. Some partial IR:
define i32 @main() #0 {
entry:
%retval = alloca i32, align 4
store i32 0, i32* %retval
%0 = load i32, i32* @a, align 4, !dbg !14
%tobool = icmp ne i32 %0, 0, !dbg !14
br i1 %tobool, label %land.lhs.true, label %if.end, !dbg !16
land.lhs.true: ; preds = %entry
%1 = load i32, i32* @b, align 4, !dbg !17
%tobool1 = icmp ne i32 %1, 0, !dbg !17
br i1 %tobool1, label %if.then, label %if.end, !dbg !18 <====
...
!4 = !MDSubprogram(name: "main", scope: !1, file: !1, line: 3, type: !5,
isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped,
isOptimized: false, function: i32 ()* @main, variables: !2)
...
!14 = !MDLocation(line: 5, column: 9, scope: !15)
!15 = distinct !MDLexicalBlock(scope: !4, file: !1, line: 5, column: 9)
!16 = !MDLocation(line: 6, column: 9, scope: !15)
!17 = !MDLocation(line: 7, column: 9, scope: !15)
!18 = !MDLocation(line: 5, column: 9, scope: !4) <====
This started happening with r225956.
It seems that the branch instruction should be associated with the same line
and scope as the instructions that evaluate the condition. This is especially
visible with the second branch, as it currently makes the debugger bounce back
to the if when stepping through the condition.
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs