14 #include "llvm/Option/ArgList.h" 19 using namespace clang;
26 const char *LinkingOutput)
const {
28 std::string
Linker = getToolChain().GetProgramPath(getShortName());
29 ArgStringList CmdArgs;
31 CmdArgs.push_back(
"-shared");
32 CmdArgs.push_back(
"-o");
34 C.
addCommand(std::make_unique<Command>(JA, *
this, Args.MakeArgString(Linker),
39 const llvm::opt::ArgList &Args,
40 std::vector<StringRef> &Features) {
41 if (
const Arg *dAbi = Args.getLastArg(options::OPT_mamdgpu_debugger_abi))
42 D.
Diag(diag::err_drv_clang_unsupported) << dAbi->getAsString(Args);
44 if (Args.getLastArg(options::OPT_mwavefrontsize64)) {
45 Features.push_back(
"-wavefrontsize16");
46 Features.push_back(
"-wavefrontsize32");
47 Features.push_back(
"+wavefrontsize64");
49 if (Args.getLastArg(options::OPT_mno_wavefrontsize64)) {
50 Features.push_back(
"-wavefrontsize16");
51 Features.push_back(
"+wavefrontsize32");
52 Features.push_back(
"-wavefrontsize64");
56 Args, Features, options::OPT_m_amdgpu_Features_Group);
60 AMDGPUToolChain::AMDGPUToolChain(
const Driver &D,
const llvm::Triple &Triple,
63 OptionsDefault({{options::OPT_O,
"3"},
64 {options::OPT_cl_std_EQ,
"CL1.2"}}) {}
78 if (!Args.getLastArgValue(options::OPT_x).equals(
"cl"))
82 DAL =
new DerivedArgList(Args.getBaseArgs());
89 if (Args.hasArg(options::OPT_c) && Args.hasArg(options::OPT_emit_llvm)) {
90 DAL->AddFlagArg(
nullptr, Opts.getOption(
getTriple().isArch64Bit()
96 if (!Args.hasArg(options::OPT_O, options::OPT_O0, options::OPT_O4,
98 DAL->AddJoinedArg(
nullptr, Opts.getOption(options::OPT_O),
106 const llvm::opt::ArgList &DriverArgs,
107 llvm::opt::ArgStringList &CC1Args,
111 if (!DriverArgs.hasArg(options::OPT_fvisibility_EQ,
112 options::OPT_fvisibility_ms_compat)) {
113 CC1Args.push_back(
"-fvisibility");
114 CC1Args.push_back(
"hidden");
115 CC1Args.push_back(
"-fapply-global-visibility-to-externs");
DiagnosticBuilder Diag(unsigned DiagID) const
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
void addCommand(std::unique_ptr< Command > C)
Dataflow Directional Tag Classes.
Compilation - A set of tasks to perform for a single driver invocation.
const llvm::opt::OptTable & getOpts() const