[PATCH] D154070: [Driver][lld/COFF] Support DWARF fission when using LTO on Windows
Haohai, Wen via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Jun 29 18:27:11 PDT 2023
HaohaiWen updated this revision to Diff 536084.
HaohaiWen added a comment.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Remove driver changes
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D154070/new/
https://reviews.llvm.org/D154070
Files:
lld/COFF/Config.h
lld/COFF/Driver.cpp
lld/COFF/LTO.cpp
lld/COFF/Options.td
lld/test/COFF/lto-debug-fission.ll
Index: lld/test/COFF/lto-debug-fission.ll
===================================================================
--- /dev/null
+++ lld/test/COFF/lto-debug-fission.ll
@@ -0,0 +1,18 @@
+; REQUIRES: x86
+
+; RUN: opt %s -o %t1.o
+; RUN: rm -rf %t.dir
+
+; Test to ensure that -dwodir:$DIR creates .dwo files under $DIR
+; RUN: lld-link -dwodir:%t.dir -noentry -dll %t1.o -out:%t.dll
+; RUN: llvm-readobj -h %t.dir/0.dwo | FileCheck %s
+
+; CHECK: Format: COFF-x86-64
+
+target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-windows-msvc"
+
+define void @f() {
+entry:
+ ret void
+}
Index: lld/COFF/Options.td
===================================================================
--- lld/COFF/Options.td
+++ lld/COFF/Options.td
@@ -42,6 +42,8 @@
def defaultlib : P<"defaultlib", "Add the library to the list of input files">;
def delayload : P<"delayload", "Delay loaded DLL name">;
def diasdkdir : P<"diasdkdir", "Set the location of the DIA SDK">;
+def dwodir : P<"dwodir",
+ "Directory to store .dwo files when LTO and debug fission are used">;
def entry : P<"entry", "Name of entry point symbol">;
def errorlimit : P<"errorlimit",
"Maximum number of errors to emit before stopping (0 = no limit)">;
Index: lld/COFF/LTO.cpp
===================================================================
--- lld/COFF/LTO.cpp
+++ lld/COFF/LTO.cpp
@@ -84,6 +84,7 @@
c.DisableVerify = true;
#endif
c.DiagHandler = diagnosticHandler;
+ c.DwoDir = ctx.config.dwoDir.str();
c.OptLevel = ctx.config.ltoo;
c.CPU = getCPUStr();
c.MAttrs = getMAttrs();
Index: lld/COFF/Driver.cpp
===================================================================
--- lld/COFF/Driver.cpp
+++ lld/COFF/Driver.cpp
@@ -1910,6 +1910,9 @@
fatal("/manifestinput: requires /manifest:embed");
}
+ // Handle /dwodir
+ config->dwoDir = args.getLastArgValue(OPT_dwodir);
+
config->thinLTOEmitImportsFiles = args.hasArg(OPT_thinlto_emit_imports_files);
config->thinLTOIndexOnly = args.hasArg(OPT_thinlto_index_only) ||
args.hasArg(OPT_thinlto_index_only_arg);
Index: lld/COFF/Config.h
===================================================================
--- lld/COFF/Config.h
+++ lld/COFF/Config.h
@@ -203,6 +203,9 @@
StringRef manifestUIAccess = "'false'";
StringRef manifestFile;
+ // used for /dwodir
+ StringRef dwoDir;
+
// Used for /aligncomm.
std::map<std::string, int> alignComm;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D154070.536084.patch
Type: text/x-patch
Size: 2502 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230630/85eaf42d/attachment-0001.bin>
More information about the cfe-commits
mailing list