diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2010-01-30 14:01:39 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2010-01-30 14:01:39 +0000 |
commit | a87bdb793ec3f2f14fc2ca441851c0387bbeec35 (patch) | |
tree | 88cf4941812412fb71584027d173571ac99466da /clang/lib/Basic/Version.cpp | |
parent | cbc4e98381631e4888b6048e95d1ff675c4fbc36 (diff) | |
download | llvm-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.cpp | 31 |
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); } |