18 llvm::cl::opt<std::string>
19 ExecutorName(
"executor", llvm::cl::desc(
"The name of the executor to use."),
20 llvm::cl::init(
"standalone"));
23 KVResults.push_back({Strings.save(Key), Strings.save(Value)});
26 std::vector<std::pair<llvm::StringRef, llvm::StringRef>>
32 llvm::function_ref<
void(StringRef Key, StringRef
Value)> Callback) {
33 for (
const auto &KV : KVResults) {
34 Callback(KV.first, KV.second);
39 Results->addResult(Key, Value);
52 Actions.emplace_back(std::move(Action), std::move(Adjuster));
53 return execute(Actions);
60 const char *Overview) {
65 return OptionsParser.takeError();
66 for (
auto I = ToolExecutorPluginRegistry::begin(),
67 E = ToolExecutorPluginRegistry::end();
72 std::unique_ptr<ToolExecutorPlugin> Plugin(I->instantiate());
74 Plugin->create(*OptionsParser);
76 return llvm::make_error<llvm::StringError>(
77 llvm::Twine(
"Failed to create '") + I->getName() +
79 llvm::inconvertibleErrorCode());
81 return std::move(*Executor);
83 return llvm::make_error<llvm::StringError>(
84 llvm::Twine(
"Executor \"") +
ExecutorName +
"\" is not registered.",
85 llvm::inconvertibleErrorCode());
92 const char *Overview) {
static std::string toString(const clang::SanitizerSet &Sanitizers)
Produce a string containing comma-separated names of sanitizers in Sanitizers set.
void reportResult(StringRef Key, StringRef Value)
Adds a KV pair to the result container of this execution.
Dataflow Directional Tag Classes.