summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-03-13 19:05:33 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-03-13 19:05:33 +0000
commit43e7eb8ff4971ea5546516c35fa16e2154101896 (patch)
tree85dd1d3090d68b30f3c02e72ecca80119b4a4c11
parent8c987f534048928a7242e5edeac09b07de353a3d (diff)
downloadllvm-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.h2
-rw-r--r--include/llvm/MC/MCDwarf.h7
-rw-r--r--lib/MC/MCContext.cpp9
-rw-r--r--lib/MC/MCDwarf.cpp3
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("/");