]> granicus.if.org Git - clang/commitdiff
Disable accelerator tables when compiling with LTO.
authorBill Wendling <isanbard@gmail.com>
Tue, 13 Nov 2012 00:54:24 +0000 (00:54 +0000)
committerBill Wendling <isanbard@gmail.com>
Tue, 13 Nov 2012 00:54:24 +0000 (00:54 +0000)
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>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167799 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Tools.cpp

index 00894c454792d1bf3469fb209e9ac2137ead2777..6b113bc1c980a6586dd3ff1647453ae2040288ad 100644 (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.