[LLVMbugs] [Bug 14020] New: Dwarf information for register-mapped variables incomplete
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Thu Oct 4 09:17:52 PDT 2012
http://llvm.org/bugs/show_bug.cgi?id=14020
Bug #: 14020
Summary: Dwarf information for register-mapped variables
incomplete
Product: libraries
Version: trunk
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P
Component: Core LLVM classes
AssignedTo: unassignedbugs at nondot.org
ReportedBy: pickensd at synopsys.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
The PromoteMem2Reg::RenamePass() method in
lib/Transforms/Utils/PromoteMemoryToRegister.cpp is failing to generate the
necessary "call llvm.dbg.value" instructions to record the state of a
register-mapped auto variable.
Test case:
#include <stdio.h>
static void foo(int a, int b){
for (int i = a; i < b; i++){
printf("%d\n",i);
}
}
int main(){
foo(123,456);
return 0;
}
Bitcode output at -O1 (x86 target) below. Notice the llvm.dbg.value that
*should* be generated but is missing:
define internal fastcc void @foo() nounwind {
...
for.body: ; preds = %for.body, %entry
%i.01 = phi i32 [ 123, %entry ], [ %inc, %for.body ]
>>>>>>MISSING>>>>: tail call void @llvm.dbg.value(metadata !{i32 %i.01}, i64 0, metadata !17), !dbg !30
%call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x
i8]* @.str, i32 0, i32 0), i32 %i.01) nounwind, !dbg !28
%inc = add nsw i32 %i.01, 1, !dbg !30
tail call void @llvm.dbg.value(metadata !{i32 %inc}, i64 0, metadata !17),
!dbg !30
%exitcond = icmp eq i32 %inc, 456, !dbg !27
br i1 %exitcond, label %for.end, label %for.body, !dbg !27
The method "RenamePass" in lib/Transforms/Utils/PromoteMemoryToRegister.cpp
inserts "call @llvm.dbg.value" for the StoreInst case of an auto-variable, but
fails to do so for the LoadInst case. Thus, the generated Dwarf is just plain
wrong in that it does not properly track the value of "i" as the debugger steps
through the loop. You will notice that the debugger mistakenly reports that "i"
has the initial value "123" at the start of each iteration of the loop.
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list