diff options
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r-- | lib/Driver/Tools.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 00894c4547..6b113bc1c9 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -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. |