[llvm] r254557 - Use std::string instead of strdup() and free() in WinCodeViewLineTables
Reid Kleckner via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 2 14:34:31 PST 2015
Author: rnk
Date: Wed Dec 2 16:34:30 2015
New Revision: 254557
URL: http://llvm.org/viewvc/llvm-project?rev=254557&view=rev
Log:
Use std::string instead of strdup() and free() in WinCodeViewLineTables
Modified:
llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp
llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.h
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp?rev=254557&r1=254556&r2=254557&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp Wed Dec 2 16:34:30 2015
@@ -27,15 +27,15 @@ StringRef WinCodeViewLineTables::getFull
auto *Scope = cast<DIScope>(S);
StringRef Dir = Scope->getDirectory(),
Filename = Scope->getFilename();
- char *&Result = DirAndFilenameToFilepathMap[std::make_pair(Dir, Filename)];
- if (Result)
- return Result;
+ std::string &Filepath =
+ DirAndFilenameToFilepathMap[std::make_pair(Dir, Filename)];
+ if (!Filepath.empty())
+ return Filepath;
// Clang emits directory and relative filename info into the IR, but CodeView
// operates on full paths. We could change Clang to emit full paths too, but
// that would increase the IR size and probably not needed for other users.
// For now, just concatenate and canonicalize the path here.
- std::string Filepath;
if (Filename.find(':') == 1)
Filepath = Filename;
else
@@ -74,8 +74,7 @@ StringRef WinCodeViewLineTables::getFull
while ((Cursor = Filepath.find("\\\\", Cursor)) != std::string::npos)
Filepath.erase(Cursor, 1);
- Result = strdup(Filepath.c_str());
- return StringRef(Result);
+ return Filepath;
}
void WinCodeViewLineTables::maybeRecordLocation(DebugLoc DL,
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.h?rev=254557&r1=254556&r2=254557&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.h (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.h Wed Dec 2 16:34:30 2015
@@ -98,7 +98,7 @@ class LLVM_LIBRARY_VISIBILITY WinCodeVie
}
} FileNameRegistry;
- typedef std::map<std::pair<StringRef, StringRef>, char *>
+ typedef std::map<std::pair<StringRef, StringRef>, std::string>
DirAndFilenameToFilepathMapTy;
DirAndFilenameToFilepathMapTy DirAndFilenameToFilepathMap;
StringRef getFullFilepath(const MDNode *S);
@@ -116,14 +116,6 @@ class LLVM_LIBRARY_VISIBILITY WinCodeVie
public:
WinCodeViewLineTables(AsmPrinter *Asm);
- ~WinCodeViewLineTables() override {
- for (DirAndFilenameToFilepathMapTy::iterator
- I = DirAndFilenameToFilepathMap.begin(),
- E = DirAndFilenameToFilepathMap.end();
- I != E; ++I)
- free(I->second);
- }
-
void setSymbolSize(const llvm::MCSymbol *, uint64_t) override {}
/// \brief Emit the COFF section that holds the line table information.
More information about the llvm-commits
mailing list