}
// Handle options that should not be passed to the preprocessor.
- if (compopt_affects_compiler_output(arg)) {
+ if (compopt_affects_compiler_output(arg)
+ || (i + 1 < args.size() && arg == "-Xclang"
+ && compopt_affects_compiler_output(args[i + 1]))) {
+ if (i + 1 < args.size() && arg == "-Xclang") {
+ state.compiler_only_args.push_back(args[i]);
+ ++i;
+ arg = make_dash_option(ctx.config, args[i]);
+ }
state.compiler_only_args.push_back(args[i]);
+ // Note: "-Xclang -option-that-takes-arg -Xclang arg" is not handled below
+ // yet.
if (compopt_takes_arg(arg)
|| (config.compiler_type() == CompilerType::nvcc && arg == "-Werror")) {
if (i == args.size() - 1) {
}
return Statistic::none;
}
- if (compopt_prefix_affects_compiler_output(arg)) {
+ if (compopt_prefix_affects_compiler_output(arg)
+ || (i + 1 < args.size() && arg == "-Xclang"
+ && compopt_prefix_affects_compiler_output(args[i + 1]))) {
+ if (i + 1 < args.size() && arg == "-Xclang") {
+ state.compiler_only_args.push_back(args[i]);
+ ++i;
+ }
state.compiler_only_args.push_back(args[i]);
return Statistic::none;
}
{"-all_load", AFFECTS_COMP},
{"-analyze", TOO_HARD}, // Clang
{"-arch", TAKES_ARG},
+ {"-ast-dump", AFFECTS_COMP}, // Clang
+ {"-ast-dump-all", AFFECTS_COMP}, // Clang
+ {"-ast-dump-all=", AFFECTS_COMP | TAKES_CONCAT_ARG}, // Clang
+ {"-ast-dump-decl-types", AFFECTS_COMP}, // Clang
+ {"-ast-dump-filter", AFFECTS_COMP | TAKES_ARG}, // Clang
+ {"-ast-dump-lookups", AFFECTS_COMP}, // Clang
+ {"-ast-dump=", AFFECTS_COMP | TAKES_CONCAT_ARG}, // Clang
+ {"-ast-list", AFFECTS_COMP}, // Clang
+ {"-ast-merge", TOO_HARD | TAKES_ARG}, // Clang
+ {"-ast-print", AFFECTS_COMP}, // Clang
+ {"-ast-view", TOO_HARD}, // Clang
{"-aux-info", TAKES_ARG},
{"-b", TAKES_ARG},
{"-bind_at_load", AFFECTS_COMP},