16 #include "llvm/ADT/STLExtras.h" 17 #include "llvm/ADT/StringRef.h" 28 bool HasSyntaxOnly =
false;
29 const std::vector<llvm::StringRef> OutputCommands = {
34 for (
size_t i = 0, e = Args.size(); i < e; ++i) {
35 StringRef Arg = Args[i];
37 if (llvm::any_of(OutputCommands, [&Arg](llvm::StringRef OutputCommand) {
38 return Arg.startswith(OutputCommand);
42 if (!Arg.startswith(
"-fcolor-diagnostics") &&
43 !Arg.startswith(
"-fdiagnostics-color"))
44 AdjustedArgs.push_back(Args[i]);
45 if (Arg ==
"-fsyntax-only")
49 AdjustedArgs.push_back(
"-fsyntax-only");
57 for (
size_t i = 0, e = Args.size(); i < e; ++i) {
58 StringRef Arg = Args[i];
59 if (!Arg.startswith(
"-o"))
60 AdjustedArgs.push_back(Args[i]);
75 for (
size_t i = 0, e = Args.size(); i < e; ++i) {
76 StringRef Arg = Args[i];
77 if (Arg ==
"--serialize-diagnostics") {
82 AdjustedArgs.push_back(Args[i]);
91 for (
size_t i = 0, e = Args.size(); i < e; ++i) {
92 StringRef Arg = Args[i];
95 if (!Arg.startswith(
"-M")) {
96 AdjustedArgs.push_back(Args[i]);
100 if (Arg ==
"-MF" || Arg ==
"-MT" || Arg ==
"-MQ")
113 CommandLineArguments::iterator I;
121 Return.insert(I, Extra.begin(), Extra.end());
138 return Second(First(Args, File), File);
145 for (
size_t I = 0, E = Args.size(); I != E; I++) {
150 if (I + 4 < E && Args[I] ==
"-Xclang" &&
151 (Args[I + 1] ==
"-load" || Args[I + 1] ==
"-plugin" ||
152 llvm::StringRef(Args[I + 1]).startswith(
"-plugin-arg-") ||
153 Args[I + 1] ==
"-add-plugin") &&
154 Args[I + 2] ==
"-Xclang") {
158 AdjustedArgs.push_back(Args[I]);
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified...
Dataflow Directional Tag Classes.