From 43e7eb8ff4971ea5546516c35fa16e2154101896 Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Thu, 13 Mar 2014 19:05:33 +0000 Subject: [PATCH] MCDwarf: Oh, and move the directory string over to std::string as well (see r203831 for similar stuff) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203833 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/MC/MCContext.h | 2 +- include/llvm/MC/MCDwarf.h | 7 ++++--- lib/MC/MCContext.cpp | 9 +++------ lib/MC/MCDwarf.cpp | 3 +-- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/include/llvm/MC/MCContext.h b/include/llvm/MC/MCContext.h index 86578cc419c..0183cfa79e6 100644 --- a/include/llvm/MC/MCContext.h +++ b/include/llvm/MC/MCContext.h @@ -325,7 +325,7 @@ namespace llvm { const SmallVectorImpl &getMCDwarfFiles(unsigned CUID = 0) { return getMCDwarfFileTable(CUID).getMCDwarfFiles(); } - const SmallVectorImpl &getMCDwarfDirs(unsigned CUID = 0) { + const SmallVectorImpl &getMCDwarfDirs(unsigned CUID = 0) { return getMCDwarfFileTable(CUID).getMCDwarfDirs(); } diff --git a/include/llvm/MC/MCDwarf.h b/include/llvm/MC/MCDwarf.h index 6ad26c4721b..b6998c590d6 100644 --- a/include/llvm/MC/MCDwarf.h +++ b/include/llvm/MC/MCDwarf.h @@ -22,6 +22,7 @@ #include "llvm/Support/raw_ostream.h" #include #include +#include namespace llvm { class MCAsmBackend; @@ -175,7 +176,7 @@ public: class MCDwarfFileTable { MCSymbol *Label; - SmallVector MCDwarfDirs; + SmallVector MCDwarfDirs; SmallVector MCDwarfFiles; MCLineSection MCLineSections; @@ -189,11 +190,11 @@ public: // const MCSymbol *EmitCU(MCStreamer *MCOS) const; - const SmallVectorImpl &getMCDwarfDirs() const { + const SmallVectorImpl &getMCDwarfDirs() const { return MCDwarfDirs; } - SmallVectorImpl &getMCDwarfDirs() { + SmallVectorImpl &getMCDwarfDirs() { return MCDwarfDirs; } diff --git a/lib/MC/MCContext.cpp b/lib/MC/MCContext.cpp index 3c8de997124..48cb5aae1fb 100644 --- a/lib/MC/MCContext.cpp +++ b/lib/MC/MCContext.cpp @@ -339,7 +339,7 @@ unsigned MCContext::GetDwarfFile(StringRef Directory, StringRef FileName, unsigned FileNumber, unsigned CUID) { MCDwarfFileTable &Table = MCDwarfFileTablesCUMap[CUID]; SmallVectorImpl& MCDwarfFiles = Table.getMCDwarfFiles(); - SmallVectorImpl& MCDwarfDirs = Table.getMCDwarfDirs(); + SmallVectorImpl& MCDwarfDirs = Table.getMCDwarfDirs(); // Make space for this FileNumber in the MCDwarfFiles vector if needed. if (FileNumber >= MCDwarfFiles.size()) { MCDwarfFiles.resize(FileNumber + 1); @@ -374,11 +374,8 @@ unsigned MCContext::GetDwarfFile(StringRef Directory, StringRef FileName, if (Directory == MCDwarfDirs[DirIndex]) break; } - if (DirIndex >= MCDwarfDirs.size()) { - char *Buf = static_cast(Allocate(Directory.size())); - memcpy(Buf, Directory.data(), Directory.size()); - MCDwarfDirs.push_back(StringRef(Buf, Directory.size())); - } + if (DirIndex >= MCDwarfDirs.size()) + MCDwarfDirs.push_back(Directory); // The DirIndex is one based, as DirIndex of 0 is used for FileNames with // no directories. MCDwarfDirs[] is unlike MCDwarfFiles[] in that the // directory names are stored at MCDwarfDirs[DirIndex-1] where FileNames diff --git a/lib/MC/MCDwarf.cpp b/lib/MC/MCDwarf.cpp index 2c1874f5e91..b0a75d5de20 100644 --- a/lib/MC/MCDwarf.cpp +++ b/lib/MC/MCDwarf.cpp @@ -596,8 +596,7 @@ static void EmitGenDwarfInfo(MCStreamer *MCOS, // AT_name, the name of the source file. Reconstruct from the first directory // and file table entries. - const SmallVectorImpl &MCDwarfDirs = - context.getMCDwarfDirs(); + const SmallVectorImpl &MCDwarfDirs = context.getMCDwarfDirs(); if (MCDwarfDirs.size() > 0) { MCOS->EmitBytes(MCDwarfDirs[0]); MCOS->EmitBytes("/");