/// addSourceLine - Add location information to specified debug information /// entry. void CompileUnit::addSourceLine(DIE *Die, DIVariable V) { // Verify variable. if (!V.Verify()) return; unsigned Line = V.getLineNumber(); if (Line == 0) return; unsigned FileID = DD->GetOrCreateSourceID(V.getContext().getFilename(), V.getContext().getDirectory()); assert(FileID && "Invalid file id"); addUInt(Die, dwarf::DW_AT_decl_file, 0, FileID); addUInt(Die, dwarf::DW_AT_decl_line, 0, Line); }
void DebugInfoFinder::processValue(const Module &M, const DbgValueInst *DVI) { MDNode *N = dyn_cast<MDNode>(DVI->getVariable()); if (!N) return; InitializeTypeMap(M); DIVariable DV = dyn_cast<MDLocalVariable>(N); if (!DV) return; if (!NodesSeen.insert(DV).second) return; processScope(DV.getContext()); processType(DV.getType().resolve(TypeIdentifierMap)); }