18 const Driver &D,
const llvm::Triple &HostTriple,
19 const llvm::opt::ArgList &Args) {}
22 const ArgList &DriverArgs, ArgStringList &CC1Args)
const {
23 if (DriverArgs.hasArg(clang::driver::options::OPT_nobuiltininc))
34 options::OPT_fsanitize_EQ,
35 options::OPT_fcf_protection_EQ,
36 options::OPT_fprofile_generate,
37 options::OPT_fprofile_generate_EQ,
38 options::OPT_fno_profile_generate,
39 options::OPT_ftest_coverage,
40 options::OPT_fno_test_coverage,
41 options::OPT_fcoverage_mapping,
42 options::OPT_fno_coverage_mapping,
43 options::OPT_coverage,
44 options::OPT_fprofile_instr_generate,
45 options::OPT_fprofile_instr_generate_EQ,
46 options::OPT_fno_profile_instr_generate,
47 options::OPT_fprofile_arcs,
48 options::OPT_fno_profile_arcs,
49 options::OPT_fcreate_profile,
50 options::OPT_fprofile_instr_use,
51 options::OPT_fprofile_instr_use_EQ,
52 options::OPT_fcs_profile_generate,
53 options::OPT_fcs_profile_generate_EQ,
55 return UnsupportedOpts;
59 const ToolChain &HostTC,
const ArgList &Args)
60 :
ToolChain(D, Triple, Args), HostTC(HostTC),
61 SYCLInstallation(D, Triple, Args) {
68 if (
const Arg *A = Args.getLastArg(Opt)) {
69 D.Diag(clang::diag::warn_drv_unsupported_option_for_target)
70 << A->getAsString(Args) <<
getTriple().str();
76 const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,
78 HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind);
81llvm::opt::DerivedArgList *
86 HostTC.TranslateArgs(Args, BoundArch, DeviceOffloadKind);
88 bool IsNewDAL =
false;
90 DAL =
new DerivedArgList(Args.getBaseArgs());
97 auto Opt(A->getOption());
98 bool Unsupported =
false;
100 if (Opt.matches(UnsupportedOpt)) {
101 if (Opt.getID() == options::OPT_fsanitize_EQ &&
102 A->getValues().size() == 1) {
103 std::string SanitizeVal = A->getValue();
104 if (SanitizeVal ==
"address") {
111 DAL->eraseArg(Opt.getID());
122 if (!BoundArch.empty()) {
123 DAL->eraseArg(options::OPT_march_EQ);
124 DAL->AddJoinedArg(
nullptr, Opts.getOption(options::OPT_march_EQ),
131 HostTC.addClangWarningOptions(CC1Args);
136 return HostTC.GetCXXStdlibType(Args);
140 ArgStringList &CC1Args)
const {
141 SYCLInstallation.addSYCLIncludeArgs(DriverArgs, CC1Args);
145 ArgStringList &CC1Args)
const {
146 HostTC.AddClangSystemIncludeArgs(DriverArgs, CC1Args);
150 ArgStringList &CC1Args)
const {
151 HostTC.AddClangCXXStdlibIncludeArgs(Args, CC1Args);
static ArrayRef< options::ID > getUnsupportedOpts()
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
const llvm::opt::OptTable & getOpts() const
SYCLInstallationDetector(const Driver &D, const llvm::Triple &HostTriple, const llvm::opt::ArgList &Args)
void addSYCLIncludeArgs(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const
The JSON file list parser is used to communicate input to InstallAPI.