Skip to content

Commit 69c7078

Browse files
authored
Restore lost lto opts for amdgpu (llvm#1637)
2 parents 32d732f + d3a2ee8 commit 69c7078

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

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

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

0 commit comments

Comments
 (0)