aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/Version.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2010-01-30 14:01:39 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2010-01-30 14:01:39 +0000
commita87bdb793ec3f2f14fc2ca441851c0387bbeec35 (patch)
tree88cf4941812412fb71584027d173571ac99466da /clang/lib/Basic/Version.cpp
parentcbc4e98381631e4888b6048e95d1ff675c4fbc36 (diff)
downloadllvm-a87bdb793ec3f2f14fc2ca441851c0387bbeec35.zip
llvm-a87bdb793ec3f2f14fc2ca441851c0387bbeec35.tar.gz
llvm-a87bdb793ec3f2f14fc2ca441851c0387bbeec35.tar.bz2
We don't need to place 0 in the URL string now that we return a StringRef.
- URL can go into read only memory now. - Compilers will fold away all the strstr calls. llvm-svn: 94887
Diffstat (limited to 'clang/lib/Basic/Version.cpp')
-rw-r--r--clang/lib/Basic/Version.cpp31
1 files changed, 13 insertions, 18 deletions
diff --git a/clang/lib/Basic/Version.cpp b/clang/lib/Basic/Version.cpp
index fdb96e5..f9d62f9 100644
--- a/clang/lib/Basic/Version.cpp
+++ b/clang/lib/Basic/Version.cpp
@@ -21,27 +21,22 @@ using namespace std;
namespace clang {
llvm::StringRef getClangRepositoryPath() {
- static const char *Path = 0;
- if (Path)
- return Path;
-
- static char URL[] = "$URL$";
- char *End = strstr(URL, "/lib/Basic");
+ static const char URL[] = "$URL$";
+ const char *URLEnd = URL + strlen(URL);
+
+ const char *End = strstr(URL, "/lib/Basic");
if (End)
- *End = 0;
-
+ URLEnd = End;
+
End = strstr(URL, "/clang/tools/clang");
if (End)
- *End = 0;
-
- char *Begin = strstr(URL, "cfe/");
- if (Begin) {
- Path = Begin + 4;
- return Path;
- }
-
- Path = URL;
- return Path;
+ URLEnd = End;
+
+ const char *Begin = strstr(URL, "cfe/");
+ if (Begin)
+ return llvm::StringRef(Begin + 4, URLEnd - Begin - 4);
+
+ return llvm::StringRef(URL, URLEnd - URL);
}