Disable accelerator tables when compiling with LTO.

LTO doesn't generate correct accelerator tables. This is due to the general lack
correct of debug info for LTO. Disable it when using LTO.
<rdar://problem/12401423>

llvm-svn: 167799
This commit is contained in:
Bill Wendling 2012-11-13 00:54:24 +00:00
parent 52c0b58d33
commit 744611f9ba
1 changed files with 16 additions and 9 deletions

View File

@ -3780,15 +3780,22 @@ void darwin::Link::AddLinkArgs(Compilation &C,
CmdArgs.push_back("-demangle");
}
// If we are using LTO, then automatically create a temporary file path for
// the linker to use, so that it's lifetime will extend past a possible
// dsymutil step.
if (Version[0] >= 116 && D.IsUsingLTO(Args) && NeedsTempPath(Inputs)) {
const char *TmpPath = C.getArgs().MakeArgString(
D.GetTemporaryPath("cc", types::getTypeTempSuffix(types::TY_Object)));
C.addTempFile(TmpPath);
CmdArgs.push_back("-object_path_lto");
CmdArgs.push_back(TmpPath);
if (Version[0] >= 116 && D.IsUsingLTO(Args)) {
if (NeedsTempPath(Inputs)) {
// If we are using LTO, then automatically create a temporary file path
// for the linker to use, so that it's lifetime will extend past a
// possible dsymutil step.
const char *TmpPath = C.getArgs().MakeArgString(
D.GetTemporaryPath("cc", types::getTypeTempSuffix(types::TY_Object)));
C.addTempFile(TmpPath);
CmdArgs.push_back("-object_path_lto");
CmdArgs.push_back(TmpPath);
}
// FIXME: Disable the creation of accelerator tables when using LTO. They
// don't currently work and can cause other tools to bork.
CmdArgs.push_back("-mllvm");
CmdArgs.push_back("-dwarf-accel-tables=Disable");
}
// Derived from the "link" spec.