15#include "llvm/ADT/STLExtras.h"
24 const llvm::Triple &Triple,
34 const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,
36 HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind);
39 "Only OpenMP offloading kinds are supported.");
41 if (!DriverArgs.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib,
45 for (
auto BCFile :
getDeviceLibs(DriverArgs, DeviceOffloadingKind)) {
46 CC1Args.push_back(BCFile.ShouldInternalize ?
"-mlink-builtin-bitcode"
47 :
"-mlink-bitcode-file");
48 CC1Args.push_back(DriverArgs.MakeArgString(BCFile.Path));
57 const llvm::opt::DerivedArgList &Args, StringRef BoundArch,
60 HostTC.TranslateArgs(Args, BoundArch, DeviceOffloadKind);
63 DAL =
new DerivedArgList(Args.getBaseArgs());
69 if (A->getOption().matches(options::OPT_fsan_cov_Group)) {
74 if (A->getOption().matches(options::OPT_fsanitize_EQ) &&
75 !Args.hasFlag(options::OPT_fgpu_sanitize, options::OPT_fno_gpu_sanitize,
82 if (!BoundArch.empty()) {
83 DAL->eraseArg(options::OPT_mcpu_EQ);
84 DAL->AddJoinedArg(
nullptr, Opts.getOption(options::OPT_mcpu_EQ), BoundArch);
91 ArgStringList &CC1Args)
const {
93 HostTC.addClangWarningOptions(CC1Args);
98 return HostTC.GetCXXStdlibType(Args);
102 const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CC1Args)
const {
103 HostTC.AddClangCXXStdlibIncludeArgs(Args, CC1Args);
107 const ArgList &DriverArgs, ArgStringList &CC1Args)
const {
108 HostTC.AddClangSystemIncludeArgs(DriverArgs, CC1Args);
112 ArgStringList &CC1Args)
const {
113 HostTC.AddIAMCUIncludeArgs(Args, CC1Args);
118 const ArgList &Args)
const {
119 return HostTC.computeMSVCVersion(D, Args);
124 const llvm::opt::ArgList &Args,
126 if (!Args.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib,
true))
137 BCLibs.emplace_back(BCLib);
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
const llvm::opt::OptTable & getOpts() const
The JSON file list parser is used to communicate input to InstallAPI.