summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2015-02-18 21:03:07 +0000
committerHans Wennborg <hans@hanshq.net>2015-02-18 21:03:07 +0000
commitdd419802eaa6660b1f03ca0dbf6dc2f139d92e4a (patch)
tree333b1051c0263a1c8eb02bb89aa0f3a35c02bd91
parent82b7742e66cd25d70d019465d2fb8e08c6cd5df3 (diff)
Merging r229719:
------------------------------------------------------------------------ r229719 | d0k | 2015-02-18 10:45:54 -0800 (Wed, 18 Feb 2015) | 8 lines Driver: Fix use of dangling std::string temporary What's going on here is that the ternary operator produces a std::string rvalue that the StringRef points to. I'd hoped bugs like this were a thing of the past with our asan testing but apparently this code path is only used when LLVM is configured with a custom --with-c-include-dirs setting. Unbreaks bootstrapping with GCC5 on Fedora (PR22625), patch by Jonathan Wakely! ------------------------------------------------------------------------ llvm-svn: 229746
-rw-r--r--clang/lib/Driver/ToolChains.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index 4d97ab3bf485..f789fd55598f 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -3154,7 +3154,8 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
SmallVector<StringRef, 5> dirs;
CIncludeDirs.split(dirs, ":");
for (StringRef dir : dirs) {
- StringRef Prefix = llvm::sys::path::is_absolute(dir) ? SysRoot : "";
+ StringRef Prefix =
+ llvm::sys::path::is_absolute(dir) ? StringRef(SysRoot) : "";
addExternCSystemInclude(DriverArgs, CC1Args, Prefix + dir);
}
return;