diff options
author | rdivacky <rdivacky@FreeBSD.org> | 2009-12-15 18:49:47 +0000 |
---|---|---|
committer | rdivacky <rdivacky@FreeBSD.org> | 2009-12-15 18:49:47 +0000 |
commit | 77212133072dc40f070a280af8217032f55a9eb4 (patch) | |
tree | 2fd5819f49caecc5f520219b6b9254fe94ebb138 /tools/driver/driver.cpp | |
parent | 4b08eb6308ca90a6c08e2fc79d100821b1b1f6aa (diff) | |
download | FreeBSD-src-77212133072dc40f070a280af8217032f55a9eb4.zip FreeBSD-src-77212133072dc40f070a280af8217032f55a9eb4.tar.gz |
Update clang to 91430.
Diffstat (limited to 'tools/driver/driver.cpp')
-rw-r--r-- | tools/driver/driver.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/tools/driver/driver.cpp b/tools/driver/driver.cpp index c61ee72..cfdd9c3 100644 --- a/tools/driver/driver.cpp +++ b/tools/driver/driver.cpp @@ -60,7 +60,10 @@ void DriverDiagnosticPrinter::HandleDiagnostic(Diagnostic::Level Level, OS << '\n'; } -llvm::sys::Path GetExecutablePath(const char *Argv0) { +llvm::sys::Path GetExecutablePath(const char *Argv0, bool CanonicalPrefixes) { + if (!CanonicalPrefixes) + return llvm::sys::Path(Argv0); + // This just needs to be some symbol in the binary; C++ doesn't // allow taking the address of ::main however. void *P = (void*) (intptr_t) GetExecutablePath; @@ -190,7 +193,16 @@ int main(int argc, const char **argv) { return cc1_main(argv+2, argv+argc, argv[0], (void*) (intptr_t) GetExecutablePath); - llvm::sys::Path Path = GetExecutablePath(argv[0]); + bool CanonicalPrefixes = true; + for (int i = 1; i < argc; ++i) { + if (llvm::StringRef(argv[i]) == "-no-canonical-prefixes") { + CanonicalPrefixes = false; + break; + } + } + + llvm::sys::Path Path = GetExecutablePath(argv[0], CanonicalPrefixes); + DriverDiagnosticPrinter DiagClient(Path.getBasename(), llvm::errs()); Diagnostic Diags(&DiagClient); @@ -200,8 +212,8 @@ int main(int argc, const char **argv) { #else bool IsProduction = false; #endif - Driver TheDriver(Path.getBasename().c_str(), Path.getDirname().c_str(), - llvm::sys::getHostTriple().c_str(), + Driver TheDriver(Path.getBasename(), Path.getDirname(), + llvm::sys::getHostTriple(), "a.out", IsProduction, Diags); // Check for ".*++" or ".*++-[^-]*" to determine if we are a C++ @@ -264,4 +276,3 @@ int main(int argc, const char **argv) { return Res; } - |