aboutsummaryrefslogtreecommitdiff
path: root/src/zig_clang_driver.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-01-29 23:38:02 -0500
committerAndrew Kelley <andrew@ziglang.org>2020-01-29 23:38:21 -0500
commitc7fa71d233cc16e93674b9f40e5c4c720642fe2c (patch)
tree9866baae613fae03d8c9b6772a304506186647f5 /src/zig_clang_driver.cpp
parenta95dce15ae4bd95cfd2266da51ba860cc6524a1b (diff)
downloadzig-c7fa71d233cc16e93674b9f40e5c4c720642fe2c.tar.gz
zig-c7fa71d233cc16e93674b9f40e5c4c720642fe2c.zip
update clang driver to release/10.x branch
upstream commit 967658150edb2cbb860c19ce54ac1e216bdc8461
Diffstat (limited to 'src/zig_clang_driver.cpp')
-rw-r--r--src/zig_clang_driver.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/zig_clang_driver.cpp b/src/zig_clang_driver.cpp
index 8b3afdb1d4..a3150022b3 100644
--- a/src/zig_clang_driver.cpp
+++ b/src/zig_clang_driver.cpp
@@ -239,8 +239,6 @@ static void getCLEnvVarOptions(std::string &EnvValue, llvm::StringSaver &Saver,
*NumberSignPtr = '=';
}
-static int ExecuteCC1Tool(ArrayRef<const char *> argv);
-
static void SetBackdoorDriverOutputsFromEnvVars(Driver &TheDriver) {
// Handle CC_PRINT_OPTIONS and CC_PRINT_OPTIONS_FILE.
TheDriver.CCPrintOptions = !!::getenv("CC_PRINT_OPTIONS");
@@ -311,19 +309,24 @@ static void SetInstallDir(SmallVectorImpl<const char *> &argv,
TheDriver.setInstalledDir(InstalledPathParent);
}
-static int ExecuteCC1Tool(ArrayRef<const char *> argv) {
+static int ExecuteCC1Tool(SmallVectorImpl<const char *> &ArgV) {
// If we call the cc1 tool from the clangDriver library (through
// Driver::CC1Main), we need to clean up the options usage count. The options
// are currently global, and they might have been used previously by the
// driver.
llvm::cl::ResetAllOptionOccurrences();
- StringRef Tool = argv[1];
- void *GetExecutablePathVP = (void *)(intptr_t) GetExecutablePath;
+
+ llvm::BumpPtrAllocator A;
+ llvm::StringSaver Saver(A);
+ llvm::cl::ExpandResponseFiles(Saver, &llvm::cl::TokenizeGNUCommandLine, ArgV,
+ /*MarkEOLs=*/false);
+ StringRef Tool = ArgV[1];
+ void *GetExecutablePathVP = (void *)(intptr_t)GetExecutablePath;
if (Tool == "-cc1")
- return cc1_main(argv.slice(2), argv[0], GetExecutablePathVP);
+ return cc1_main(makeArrayRef(ArgV).slice(2), ArgV[0], GetExecutablePathVP);
if (Tool == "-cc1as")
- return cc1as_main(argv.slice(2), argv[0], GetExecutablePathVP);
-
+ return cc1as_main(makeArrayRef(ArgV).slice(2), ArgV[0],
+ GetExecutablePathVP);
// Reject unknown tools.
llvm::errs() << "error: unknown integrated tool '" << Tool << "'. "
<< "Valid tools include '-cc1' and '-cc1as'.\n";
@@ -541,4 +544,3 @@ int ZigClang_main(int argc_, const char **argv_) {
// failing command.
return Res;
}
-