summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/CommandLine.cpp
diff options
context:
space:
mode:
authorJoel E. Denny <jdenny.ornl@gmail.com>2018-11-06 22:07:03 +0000
committerJoel E. Denny <jdenny.ornl@gmail.com>2018-11-06 22:07:03 +0000
commit24994d77b8178f4c65dd4ef9c82748d337a48f2f (patch)
tree68d8d4705a00a596777be30ffc2b4649fd621ec1 /llvm/lib/Support/CommandLine.cpp
parentc3ad28d5e81ae9be0bf18b5c31065777dc2af66f (diff)
downloadbcm5719-llvm-24994d77b8178f4c65dd4ef9c82748d337a48f2f.tar.gz
bcm5719-llvm-24994d77b8178f4c65dd4ef9c82748d337a48f2f.zip
[FileCheck] Parse command-line options from FILECHECK_OPTS
This feature makes it easy to tune FileCheck diagnostic output when running the test suite via ninja, a bot, or an IDE. For example: ``` $ FILECHECK_OPTS='-color -v -dump-input-on-failure' \ LIT_FILTER='OpenMP/for_codegen.cpp' ninja check-clang \ | less -R ``` Reviewed By: probinson Differential Revision: https://reviews.llvm.org/D53517 llvm-svn: 346272
Diffstat (limited to 'llvm/lib/Support/CommandLine.cpp')
-rw-r--r--llvm/lib/Support/CommandLine.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/llvm/lib/Support/CommandLine.cpp b/llvm/lib/Support/CommandLine.cpp
index b169bb60964..cb2a2e557fa 100644
--- a/llvm/lib/Support/CommandLine.cpp
+++ b/llvm/lib/Support/CommandLine.cpp
@@ -1061,8 +1061,27 @@ void cl::ParseEnvironmentOptions(const char *progName, const char *envVar,
}
bool cl::ParseCommandLineOptions(int argc, const char *const *argv,
- StringRef Overview, raw_ostream *Errs) {
- return GlobalParser->ParseCommandLineOptions(argc, argv, Overview,
+ StringRef Overview, raw_ostream *Errs,
+ const char *EnvVar) {
+ SmallVector<const char *, 20> NewArgv;
+ BumpPtrAllocator A;
+ StringSaver Saver(A);
+ NewArgv.push_back(argv[0]);
+
+ // Parse options from environment variable.
+ if (EnvVar) {
+ if (llvm::Optional<std::string> EnvValue =
+ sys::Process::GetEnv(StringRef(EnvVar)))
+ TokenizeGNUCommandLine(*EnvValue, Saver, NewArgv);
+ }
+
+ // Append options from command line.
+ for (int I = 1; I < argc; ++I)
+ NewArgv.push_back(argv[I]);
+ int NewArgc = static_cast<int>(NewArgv.size());
+
+ // Parse all options.
+ return GlobalParser->ParseCommandLineOptions(NewArgc, &NewArgv[0], Overview,
Errs);
}
OpenPOWER on IntegriCloud