[LLVMbugs] [Bug 5337] New: findDbgDeclare() fails to find a proper DbgDeclareInst.

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Wed Oct 28 18:23:29 PDT 2009


           Summary: findDbgDeclare() fails to find a proper DbgDeclareInst.
           Product: libraries
           Version: 2.6
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: trivial
          Priority: P2
         Component: Core LLVM classes
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: sunae.seo at gmail.com
                CC: llvmbugs at cs.uiuc.edu

Hello, all.

I found something strange in Debuginfo.cpp/findDbgDeclare() function.
(which is in %LLVMSRC/lib/Analysis/)

FindDbgDeclare(Instruction* V) finds the source-level variable declaration of
But in my simple piece of code, it fails to find the name "LoopCount"
because of casting operation:

  for (LoopCount=0; ...; LoopCount++) {
    foo((void*) &LoopCount);

FindDbgDeclare(Instruction* V) function iterates over V->UseList, finds
the *first* BitCastInst user, and completes its search. But for the above code,
clang generates two BitCastInst users for LoopCount. One is for casting
operation, and the other is for argument of @llvm.dbg.declare().
FindDbgDeclare() function fails to find the proper DbgDeclareInst, because
it is accessible by the *second* BitCastInst user (i.e., the argument of

I fixed this problem by modifying findDbgDeclare() code:

/// Before fixing:
      for (Value::use_const_iterator I = V->use_begin(), E =V->use_end();
            I != E; ++I)
        if (isa<BitCastInst>(I))
          return findDbgDeclare(*I, false);

/// After fixing:
      for (Value::use_const_iterator I = V->use_begin(), E =V->use_end();
            I != E; ++I) {
        if (isa<BitCastInst>(I)) {
          const DbgDeclareInst *DDI = findDbgDeclare(*I, false);
          if (DDI) return DDI;

I do not know whether it is a known bug or not. But I think it is worth
to report.

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