summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2011-11-06 10:51:30 +0000
committerChandler Carruth <chandlerc@gmail.com>2011-11-06 10:51:30 +0000
commit0ad080e720c4e4debcd059fddfbd1d948c7214c0 (patch)
tree8e26b7ce45027ad4bfb70be035432eba3f272afb /clang
parentf5d4df9e44abcdc85ec52da474df99539428a86b (diff)
downloadbcm5719-llvm-0ad080e720c4e4debcd059fddfbd1d948c7214c0.tar.gz
bcm5719-llvm-0ad080e720c4e4debcd059fddfbd1d948c7214c0.zip
The version objects need to actually store the version strings; they
aren't guaranteed to live long enough otherwise. llvm-svn: 143875
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Driver/ToolChains.cpp8
-rw-r--r--clang/lib/Driver/ToolChains.h4
2 files changed, 6 insertions, 6 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index ec6aea79262..159d2afcd0e 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -1523,11 +1523,11 @@ static LinuxDistro DetectLinuxDistro(llvm::Triple::ArchType Arch) {
///
/// This is the primary means of forming GCCVersion objects.
/*static*/ Linux::GCCVersion Linux::GCCVersion::Parse(StringRef VersionText) {
- const GCCVersion BadVersion = { VersionText, -1, -1, -1, "" };
+ const GCCVersion BadVersion = { VersionText.str(), -1, -1, -1, "" };
std::pair<StringRef, StringRef> First = VersionText.split('.');
std::pair<StringRef, StringRef> Second = First.second.split('.');
- GCCVersion GoodVersion = { VersionText, -1, -1, -1, "" };
+ GCCVersion GoodVersion = { VersionText.str(), -1, -1, -1, "" };
if (First.first.getAsInteger(10, GoodVersion.Major) ||
GoodVersion.Major < 0)
return BadVersion;
@@ -1544,14 +1544,14 @@ static LinuxDistro DetectLinuxDistro(llvm::Triple::ArchType Arch) {
// 4.4.2-rc4
// 4.4.x-patched
// And retains any patch number it finds.
- StringRef PatchText = GoodVersion.PatchSuffix = Second.second;
+ StringRef PatchText = GoodVersion.PatchSuffix = Second.second.str();
if (!PatchText.empty()) {
if (unsigned EndNumber = PatchText.find_first_not_of("0123456789")) {
// Try to parse the number and any suffix.
if (PatchText.slice(0, EndNumber).getAsInteger(10, GoodVersion.Patch) ||
GoodVersion.Patch < 0)
return BadVersion;
- GoodVersion.PatchSuffix = PatchText.substr(EndNumber);
+ GoodVersion.PatchSuffix = PatchText.substr(EndNumber).str();
}
}
diff --git a/clang/lib/Driver/ToolChains.h b/clang/lib/Driver/ToolChains.h
index 7599cd6b453..31c97d6e454 100644
--- a/clang/lib/Driver/ToolChains.h
+++ b/clang/lib/Driver/ToolChains.h
@@ -389,13 +389,13 @@ class LLVM_LIBRARY_VISIBILITY Linux : public Generic_ELF {
/// becomes necessary, it can be added.
struct GCCVersion {
/// \brief The unparsed text of the version.
- StringRef Text;
+ std::string Text;
/// \brief The parsed major, minor, and patch numbers.
int Major, Minor, Patch;
/// \brief Any textual suffix on the patch number.
- StringRef PatchSuffix;
+ std::string PatchSuffix;
static GCCVersion Parse(StringRef VersionText);
bool operator<(const GCCVersion &RHS) const;
OpenPOWER on IntegriCloud