diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-03-13 19:05:33 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-03-13 19:05:33 +0000 |
commit | 43e7eb8ff4971ea5546516c35fa16e2154101896 (patch) | |
tree | 85dd1d3090d68b30f3c02e72ecca80119b4a4c11 | |
parent | 8c987f534048928a7242e5edeac09b07de353a3d (diff) | |
download | llvm-43e7eb8ff4971ea5546516c35fa16e2154101896.tar.gz llvm-43e7eb8ff4971ea5546516c35fa16e2154101896.tar.bz2 llvm-43e7eb8ff4971ea5546516c35fa16e2154101896.tar.xz |
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
-rw-r--r-- | include/llvm/MC/MCContext.h | 2 | ||||
-rw-r--r-- | include/llvm/MC/MCDwarf.h | 7 | ||||
-rw-r--r-- | lib/MC/MCContext.cpp | 9 | ||||
-rw-r--r-- | 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 86578cc419..0183cfa79e 100644 --- a/include/llvm/MC/MCContext.h +++ b/include/llvm/MC/MCContext.h @@ -325,7 +325,7 @@ namespace llvm { const SmallVectorImpl<MCDwarfFile> &getMCDwarfFiles(unsigned CUID = 0) { return getMCDwarfFileTable(CUID).getMCDwarfFiles(); } - const SmallVectorImpl<StringRef> &getMCDwarfDirs(unsigned CUID = 0) { + const SmallVectorImpl<std::string> &getMCDwarfDirs(unsigned CUID = 0) { return getMCDwarfFileTable(CUID).getMCDwarfDirs(); } diff --git a/include/llvm/MC/MCDwarf.h b/include/llvm/MC/MCDwarf.h index 6ad26c4721..b6998c590d 100644 --- a/include/llvm/MC/MCDwarf.h +++ b/include/llvm/MC/MCDwarf.h @@ -22,6 +22,7 @@ #include "llvm/Support/raw_ostream.h" #include <map> #include <vector> +#include <string> namespace llvm { class MCAsmBackend; @@ -175,7 +176,7 @@ public: class MCDwarfFileTable { MCSymbol *Label; - SmallVector<StringRef, 3> MCDwarfDirs; + SmallVector<std::string, 3> MCDwarfDirs; SmallVector<MCDwarfFile, 3> MCDwarfFiles; MCLineSection MCLineSections; @@ -189,11 +190,11 @@ public: // const MCSymbol *EmitCU(MCStreamer *MCOS) const; - const SmallVectorImpl<StringRef> &getMCDwarfDirs() const { + const SmallVectorImpl<std::string> &getMCDwarfDirs() const { return MCDwarfDirs; } - SmallVectorImpl<StringRef> &getMCDwarfDirs() { + SmallVectorImpl<std::string> &getMCDwarfDirs() { return MCDwarfDirs; } diff --git a/lib/MC/MCContext.cpp b/lib/MC/MCContext.cpp index 3c8de99712..48cb5aae1f 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<MCDwarfFile>& MCDwarfFiles = Table.getMCDwarfFiles(); - SmallVectorImpl<StringRef>& MCDwarfDirs = Table.getMCDwarfDirs(); + SmallVectorImpl<std::string>& 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<char *>(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 2c1874f5e9..b0a75d5de2 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<StringRef> &MCDwarfDirs = - context.getMCDwarfDirs(); + const SmallVectorImpl<std::string> &MCDwarfDirs = context.getMCDwarfDirs(); if (MCDwarfDirs.size() > 0) { MCOS->EmitBytes(MCDwarfDirs[0]); MCOS->EmitBytes("/"); |