Changes in directory llvm/lib/CodeGen:
DwarfWriter.cpp updated: 1.82 -> 1.83 MachineDebugInfo.cpp updated: 1.48 -> 1.49 --- Log message: Do not leak all of the SourceLineInfo objects. Do not bother mallocing each one separately. --- Diffs of the changes: (+15 -14) DwarfWriter.cpp | 27 ++++++++++++++------------- MachineDebugInfo.cpp | 2 +- 2 files changed, 15 insertions(+), 14 deletions(-) Index: llvm/lib/CodeGen/DwarfWriter.cpp diff -u llvm/lib/CodeGen/DwarfWriter.cpp:1.82 llvm/lib/CodeGen/DwarfWriter.cpp:1.83 --- llvm/lib/CodeGen/DwarfWriter.cpp:1.82 Tue Oct 17 12:17:24 2006 +++ llvm/lib/CodeGen/DwarfWriter.cpp Tue Oct 17 17:06:46 2006 @@ -2178,7 +2178,7 @@ // A sequence for each text section. for (unsigned j = 0, M = SectionSourceLines.size(); j < M; ++j) { // Isolate current sections line info. - const std::vector<SourceLineInfo *> &LineInfos = SectionSourceLines[j]; + const std::vector<SourceLineInfo> &LineInfos = SectionSourceLines[j]; if (DwarfVerbose) { O << "\t" @@ -2193,40 +2193,40 @@ // Construct rows of the address, source, line, column matrix. for (unsigned i = 0, N = LineInfos.size(); i < N; ++i) { - SourceLineInfo *LineInfo = LineInfos[i]; + const SourceLineInfo &LineInfo = LineInfos[i]; if (DwarfVerbose) { - unsigned SourceID = LineInfo->getSourceID(); + unsigned SourceID = LineInfo.getSourceID(); const SourceFileInfo &SourceFile = SourceFiles[SourceID]; unsigned DirectoryID = SourceFile.getDirectoryID(); O << "\t" << TAI->getCommentString() << " " << Directories[DirectoryID] << SourceFile.getName() << ":" - << LineInfo->getLine() << "\n"; + << LineInfo.getLine() << "\n"; } // Define the line address. EmitInt8(0); EOL("Extended Op"); EmitInt8(4 + 1); EOL("Op size"); EmitInt8(DW_LNE_set_address); EOL("DW_LNE_set_address"); - EmitReference("loc", LineInfo->getLabelID()); EOL("Location label"); + EmitReference("loc", LineInfo.getLabelID()); EOL("Location label"); // If change of source, then switch to the new source. - if (Source != LineInfo->getSourceID()) { - Source = LineInfo->getSourceID(); + if (Source != LineInfo.getSourceID()) { + Source = LineInfo.getSourceID(); EmitInt8(DW_LNS_set_file); EOL("DW_LNS_set_file"); EmitULEB128Bytes(Source); EOL("New Source"); } // If change of line. - if (Line != LineInfo->getLine()) { + if (Line != LineInfo.getLine()) { // Determine offset. - int Offset = LineInfo->getLine() - Line; + int Offset = LineInfo.getLine() - Line; int Delta = Offset - MinLineDelta; // Update line. - Line = LineInfo->getLine(); + Line = LineInfo.getLine(); // If delta is small enough and in range... if (Delta >= 0 && Delta < (MaxLineDelta - 1)) { @@ -2635,13 +2635,13 @@ EmitLabel("func_end", SubprogramCount); // Get function line info. - std::vector<SourceLineInfo *> &LineInfos = DebugInfo->getSourceLines(); + const std::vector<SourceLineInfo> &LineInfos = DebugInfo->getSourceLines(); if (!LineInfos.empty()) { // Get section line info. unsigned ID = SectionMap.insert(Asm->CurrentSection); if (SectionSourceLines.size() < ID) SectionSourceLines.resize(ID); - std::vector<SourceLineInfo *> &SectionLineInfos =SectionSourceLines[ID-1]; + std::vector<SourceLineInfo> &SectionLineInfos = SectionSourceLines[ID-1]; // Append the function info to section info. SectionLineInfos.insert(SectionLineInfos.end(), LineInfos.begin(), LineInfos.end()); @@ -2654,7 +2654,8 @@ EmitFunctionDebugFrame(); // Reset the line numbers for the next function. - LineInfos.clear(); + // FIXME: move this to release memory of the debuginfo object. + DebugInfo->ClearLineInfo(); // Clear function debug information. DebugInfo->EndFunction(); Index: llvm/lib/CodeGen/MachineDebugInfo.cpp diff -u llvm/lib/CodeGen/MachineDebugInfo.cpp:1.48 llvm/lib/CodeGen/MachineDebugInfo.cpp:1.49 --- llvm/lib/CodeGen/MachineDebugInfo.cpp:1.48 Fri Oct 13 08:01:34 2006 +++ llvm/lib/CodeGen/MachineDebugInfo.cpp Tue Oct 17 17:06:46 2006 @@ -1538,7 +1538,7 @@ unsigned MachineDebugInfo::RecordLabel(unsigned Line, unsigned Column, unsigned Source) { unsigned ID = NextLabelID(); - Lines.push_back(new SourceLineInfo(Line, Column, Source, ID)); + Lines.push_back(SourceLineInfo(Line, Column, Source, ID)); return ID; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits