[LLVMbugs] [Bug 10176] New: reassociate corrupts debug info

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Jun 23 08:15:06 PDT 2011


           Summary: reassociate corrupts debug info
           Product: libraries
           Version: trunk
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Scalar Optimizations
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: gohman at apple.com
                CC: llvmbugs at cs.uiuc.edu

On this C testcase:

long foo(long a, long b, long c) {
  long d = c + b;
  return d + a;

clang -O2 -g produces this output (edited for clarity):

  tail call void @llvm.dbg.value(metadata !{i64 %add}, i64 0, metadata !9)
  %add = add i64 %b, %a
  %add4 = add i64 %add, %c
  ret i64 %add4
!9 = metadata !{i32 590080, metadata !10, metadata !"d", metadata !2, i32 2,
metadata !5, i32 0} ; [ DW_TAG_auto_variable ]

This says that the variable "d" has the value of %add. This is actively wrong,
because %add is b+a, not c+b.

To be conservatively correct within the current system, any pass which modifies
instructions in place (reassociate, in this case) should also search for
@llvm.dbg.value calls that reference instructions to be modified, and delete

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