mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-27 00:21:03 +00:00
DebugInfo: Improve reuse of file table entries in asm debug info
The previous deduping strategy was woefully inadequate - it only considered the most recent file used and avoided emitting a duplicate in that case - never considering the a/b/a scenario. It was also lacking when it came to directory paths as the previous filename would never match the current if the filename had been split into file and directory components. This change builds caching functionality into the line table at the lowest level in an optional form (a file number of 0 indicates that one should be chosen and returned) and will eventually be reused by the normal source level debugging DWARF emission. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204027 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
#define LLVM_MC_MCDWARF_H
|
||||
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/ADT/StringMap.h"
|
||||
#include "llvm/ADT/MapVector.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
#include "llvm/Support/Dwarf.h"
|
||||
@@ -179,8 +180,9 @@ struct MCDwarfLineTableHeader {
|
||||
MCSymbol *Label;
|
||||
SmallVector<std::string, 3> MCDwarfDirs;
|
||||
SmallVector<MCDwarfFile, 3> MCDwarfFiles;
|
||||
StringMap<unsigned> SourceIdMap;
|
||||
MCDwarfLineTableHeader() : Label(nullptr) {}
|
||||
unsigned getFile(StringRef Directory, StringRef FileName, unsigned FileNumber);
|
||||
unsigned getFile(StringRef Directory, StringRef FileName, unsigned FileNumber = 0);
|
||||
std::pair<MCSymbol *, MCSymbol *> Emit(MCStreamer *MCOS) const;
|
||||
};
|
||||
|
||||
@@ -195,7 +197,7 @@ public:
|
||||
// This emits the Dwarf file and the line tables for a given Compile Unit.
|
||||
const MCSymbol *EmitCU(MCStreamer *MCOS) const;
|
||||
|
||||
unsigned getFile(StringRef Directory, StringRef FileName, unsigned FileNumber);
|
||||
unsigned getFile(StringRef Directory, StringRef FileName, unsigned FileNumber = 0);
|
||||
|
||||
MCSymbol *getLabel() const {
|
||||
return Header.Label;
|
||||
|
Reference in New Issue
Block a user