From a50059e34309c3adf76c284a68f91c4ca3574782 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Tue, 13 Nov 2012 00:54:24 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167799 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 25 ++++++++++++++++--------- 1 file 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. -- 2.50.1