Skip to content

Commit 04cac5b

Browse files
committed
Refactor duplicated code and address review comments
1 parent c9ec56e commit 04cac5b

File tree

4 files changed

+26
-22
lines changed

4 files changed

+26
-22
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7745,17 +7745,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
77457745
options::OPT_mno_amdgpu_ieee);
77467746
}
77477747

7748-
// For all the host OpenMP offloading compile jobs we need to pass the targets
7749-
// information using -fopenmp-targets= option.
7750-
if (JA.isHostOffloading(Action::OFK_OpenMP)) {
7751-
SmallString<128> Targets("-fopenmp-targets=");
7752-
7753-
SmallVector<std::string, 4> Triples;
7754-
auto TCRange = C.getOffloadToolChains<Action::OFK_OpenMP>();
7755-
std::transform(TCRange.first, TCRange.second, std::back_inserter(Triples),
7756-
[](auto TC) { return TC.second->getTripleString(); });
7757-
CmdArgs.push_back(Args.MakeArgString(Targets + llvm::join(Triples, ",")));
7758-
}
7748+
addOpenMPHostOffloadingArgs(C, JA, Args, CmdArgs);
77597749

77607750
bool VirtualFunctionElimination =
77617751
Args.hasFlag(options::OPT_fvirtual_function_elimination,

clang/lib/Driver/ToolChains/CommonArgs.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1262,6 +1262,25 @@ bool tools::addOpenMPRuntime(const Compilation &C, ArgStringList &CmdArgs,
12621262
return true;
12631263
}
12641264

1265+
void tools::addOpenMPHostOffloadingArgs(const Compilation &C,
1266+
const JobAction &JA,
1267+
const llvm::opt::ArgList &Args,
1268+
llvm::opt::ArgStringList &CmdArgs) {
1269+
if (!JA.isHostOffloading(Action::OFK_OpenMP))
1270+
return;
1271+
1272+
// For all the host OpenMP offloading compile jobs we need to pass the targets
1273+
// information using -fopenmp-targets= option.
1274+
constexpr llvm::StringLiteral Targets("-fopenmp-targets=");
1275+
1276+
SmallVector<std::string> Triples;
1277+
auto TCRange = C.getOffloadToolChains<Action::OFK_OpenMP>();
1278+
std::transform(TCRange.first, TCRange.second, std::back_inserter(Triples),
1279+
[](auto TC) { return TC.second->getTripleString(); });
1280+
CmdArgs.push_back(
1281+
Args.MakeArgString(Twine(Targets) + llvm::join(Triples, ",")));
1282+
}
1283+
12651284
/// Add Fortran runtime libs
12661285
void tools::addFortranRuntimeLibs(const ToolChain &TC, const ArgList &Args,
12671286
llvm::opt::ArgStringList &CmdArgs) {

clang/lib/Driver/ToolChains/CommonArgs.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@ bool addOpenMPRuntime(const Compilation &C, llvm::opt::ArgStringList &CmdArgs,
116116
bool ForceStaticHostRuntime = false,
117117
bool IsOffloadingHost = false, bool GompNeedsRT = false);
118118

119+
/// Adds offloading options for OpenMP host compilation to \p CmdArgs.
120+
void addOpenMPHostOffloadingArgs(const Compilation &C, const JobAction &JA,
121+
const llvm::opt::ArgList &Args,
122+
llvm::opt::ArgStringList &CmdArgs);
123+
119124
/// Adds Fortran runtime libraries to \p CmdArgs.
120125
void addFortranRuntimeLibs(const ToolChain &TC, const llvm::opt::ArgList &Args,
121126
llvm::opt::ArgStringList &CmdArgs);

clang/lib/Driver/ToolChains/Flang.cpp

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -494,17 +494,7 @@ void Flang::addOffloadOptions(Compilation &C, const InputInfoList &Inputs,
494494
CmdArgs.push_back("-nogpulib");
495495
}
496496

497-
// For all the host OpenMP offloading compile jobs we need to pass the targets
498-
// information using -fopenmp-targets= option.
499-
if (JA.isHostOffloading(Action::OFK_OpenMP)) {
500-
SmallString<128> Targets("-fopenmp-targets=");
501-
502-
SmallVector<std::string, 4> Triples;
503-
auto TCRange = C.getOffloadToolChains<Action::OFK_OpenMP>();
504-
std::transform(TCRange.first, TCRange.second, std::back_inserter(Triples),
505-
[](auto TC) { return TC.second->getTripleString(); });
506-
CmdArgs.push_back(Args.MakeArgString(Targets + llvm::join(Triples, ",")));
507-
}
497+
addOpenMPHostOffloadingArgs(C, JA, Args, CmdArgs);
508498
}
509499

510500
static void addFloatingPointOptions(const Driver &D, const ArgList &Args,

0 commit comments

Comments
 (0)