Skip to content

Commit 26bc21f

Browse files
committed
Restore lost lto opts for amdgpu
1 parent 06b23f8 commit 26bc21f

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9459,6 +9459,29 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA,
94599459
A->render(Args, LinkerArgs);
94609460
}
94619461

9462+
if (isAMDGPU) {
9463+
StringRef OOpt;
9464+
if (const Arg *A = Args.getLastArg(options::OPT_O_Group)) {
9465+
if (A->getOption().matches(options::OPT_O4) ||
9466+
A->getOption().matches(options::OPT_Ofast))
9467+
OOpt = "3";
9468+
else if (A->getOption().matches(options::OPT_O)) {
9469+
OOpt = A->getValue();
9470+
if (OOpt == "g")
9471+
OOpt = "1";
9472+
else if (OOpt == "s" || OOpt == "z")
9473+
OOpt = "2";
9474+
} else if (A->getOption().matches(options::OPT_O0))
9475+
OOpt = "0";
9476+
}
9477+
9478+
if (!OOpt.empty() && OOpt != "0") {
9479+
CmdArgs.push_back(Args.MakeArgString(
9480+
"--device-linker=" + TC->getTripleString() +
9481+
"=--lto-newpm-passes=default<O" + OOpt + ">"));
9482+
}
9483+
}
9484+
94629485
// Forward all of these to the appropriate toolchain.
94639486
for (StringRef Arg : CompilerArgs)
94649487
CmdArgs.push_back(Args.MakeArgString(

0 commit comments

Comments
 (0)