mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-22 20:20:03 +00:00
MCDwarf: Simply MCDwarfFile since it really is just a StringRef and unsigned.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203827 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7e9df19d5f
commit
4ad41871eb
@ -28,7 +28,7 @@ namespace llvm {
|
||||
class MCSection;
|
||||
class MCSymbol;
|
||||
class MCLabel;
|
||||
class MCDwarfFile;
|
||||
struct MCDwarfFile;
|
||||
class MCDwarfLoc;
|
||||
class MCObjectFileInfo;
|
||||
class MCRegisterInfo;
|
||||
|
@ -37,41 +37,15 @@ class SMLoc;
|
||||
/// and MCDwarfFile's are created and unique'd by the MCContext class where
|
||||
/// the file number for each is its index into the vector of DwarfFiles (note
|
||||
/// index 0 is not used and not a valid dwarf file number).
|
||||
class MCDwarfFile {
|
||||
struct MCDwarfFile {
|
||||
// Name - the base name of the file without its directory path.
|
||||
// The StringRef references memory allocated in the MCContext.
|
||||
StringRef Name;
|
||||
|
||||
// DirIndex - the index into the list of directory names for this file name.
|
||||
unsigned DirIndex;
|
||||
|
||||
private: // MCContext creates and uniques these.
|
||||
friend class MCContext;
|
||||
MCDwarfFile(StringRef name, unsigned dirIndex)
|
||||
: Name(name), DirIndex(dirIndex) {}
|
||||
|
||||
MCDwarfFile(const MCDwarfFile &) LLVM_DELETED_FUNCTION;
|
||||
void operator=(const MCDwarfFile &) LLVM_DELETED_FUNCTION;
|
||||
|
||||
public:
|
||||
/// getName - Get the base name of this MCDwarfFile.
|
||||
StringRef getName() const { return Name; }
|
||||
|
||||
/// getDirIndex - Get the dirIndex of this MCDwarfFile.
|
||||
unsigned getDirIndex() const { return DirIndex; }
|
||||
|
||||
/// print - Print the value to the stream \p OS.
|
||||
void print(raw_ostream &OS) const;
|
||||
|
||||
/// dump - Print the value to stderr.
|
||||
void dump() const;
|
||||
};
|
||||
|
||||
inline raw_ostream &operator<<(raw_ostream &OS, const MCDwarfFile &DwarfFile) {
|
||||
DwarfFile.print(OS);
|
||||
return OS;
|
||||
}
|
||||
|
||||
/// MCDwarfLoc - Instances of this class represent the information from a
|
||||
/// dwarf .loc directive.
|
||||
class MCDwarfLoc {
|
||||
|
@ -391,7 +391,9 @@ unsigned MCContext::GetDwarfFile(StringRef Directory, StringRef FileName,
|
||||
// vector.
|
||||
char *Buf = static_cast<char *>(Allocate(FileName.size()));
|
||||
memcpy(Buf, FileName.data(), FileName.size());
|
||||
File = new (*this) MCDwarfFile(StringRef(Buf, FileName.size()), DirIndex);
|
||||
File = new (*this) MCDwarfFile;
|
||||
File->Name = StringRef(Buf, FileName.size());
|
||||
File->DirIndex = DirIndex;
|
||||
|
||||
// return the allocated FileNumber.
|
||||
return FileNumber;
|
||||
|
@ -289,10 +289,10 @@ const MCSymbol *MCDwarfFileTable::EmitCU(MCStreamer *MCOS) const {
|
||||
|
||||
// Second the file table.
|
||||
for (unsigned i = 1; i < MCDwarfFiles.size(); i++) {
|
||||
MCOS->EmitBytes(MCDwarfFiles[i]->getName()); // FileName
|
||||
MCOS->EmitBytes(MCDwarfFiles[i]->Name); // FileName
|
||||
MCOS->EmitBytes(StringRef("\0", 1)); // the null term. of the string
|
||||
// the Directory num
|
||||
MCOS->EmitULEB128IntValue(MCDwarfFiles[i]->getDirIndex());
|
||||
MCOS->EmitULEB128IntValue(MCDwarfFiles[i]->DirIndex);
|
||||
MCOS->EmitIntValue(0, 1); // last modification timestamp (always 0)
|
||||
MCOS->EmitIntValue(0, 1); // filesize (always 0)
|
||||
}
|
||||
@ -411,16 +411,6 @@ void MCDwarfLineAddr::Encode(MCContext &Context, int64_t LineDelta,
|
||||
OS << char(Temp);
|
||||
}
|
||||
|
||||
void MCDwarfFile::print(raw_ostream &OS) const {
|
||||
OS << '"' << getName() << '"';
|
||||
}
|
||||
|
||||
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
|
||||
void MCDwarfFile::dump() const {
|
||||
print(dbgs());
|
||||
}
|
||||
#endif
|
||||
|
||||
// Utility function to write a tuple for .debug_abbrev.
|
||||
static void EmitAbbrev(MCStreamer *MCOS, uint64_t Name, uint64_t Form) {
|
||||
MCOS->EmitULEB128IntValue(Name);
|
||||
@ -614,7 +604,7 @@ static void EmitGenDwarfInfo(MCStreamer *MCOS,
|
||||
}
|
||||
const SmallVectorImpl<MCDwarfFile *> &MCDwarfFiles =
|
||||
MCOS->getContext().getMCDwarfFiles();
|
||||
MCOS->EmitBytes(MCDwarfFiles[1]->getName());
|
||||
MCOS->EmitBytes(MCDwarfFiles[1]->Name);
|
||||
MCOS->EmitIntValue(0, 1); // NULL byte to terminate the string.
|
||||
|
||||
// AT_comp_dir, the working directory the assembly was done in.
|
||||
|
@ -1592,7 +1592,7 @@ bool AsmParser::parseStatement(ParseStatementInfo &Info) {
|
||||
const SmallVectorImpl<MCDwarfFile *> &MCDwarfFiles =
|
||||
getContext().getMCDwarfFiles();
|
||||
if (CppHashFilename.size() != 0) {
|
||||
if (MCDwarfFiles[getContext().getGenDwarfFileNumber()]->getName() !=
|
||||
if (MCDwarfFiles[getContext().getGenDwarfFileNumber()]->Name !=
|
||||
CppHashFilename)
|
||||
getStreamer().EmitDwarfFileDirective(
|
||||
getContext().nextGenDwarfFileNumber(), StringRef(),
|
||||
|
Loading…
Reference in New Issue
Block a user