[PATCH] D98183: [libLTO] Add support for -save-temps.

Qiongsi Wu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 17 14:54:09 PDT 2023


qiongsiwu1 updated this revision to Diff 541242.
qiongsiwu1 edited the summary of this revision.

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D98183/new/

https://reviews.llvm.org/D98183

Files:
  llvm/lib/LTO/LTOCodeGenerator.cpp
  llvm/test/LTO/X86/lto-save-temps.ll


Index: llvm/test/LTO/X86/lto-save-temps.ll
===================================================================
--- /dev/null
+++ llvm/test/LTO/X86/lto-save-temps.ll
@@ -0,0 +1,19 @@
+; Check -lto-save-temps generates all the necessary temp files.
+; RUN: rm -rf %t.d
+; RUN: mkdir -p %t.d && cd %t.d
+; RUN: llvm-as %s -o %t1.bc
+; RUN: llvm-lto -lto-save-temps %t1.bc -o %t2.bc
+; RUN: llvm-dis ld-temp.0.3.import.bc -o - | FileCheck %s
+; RUN: llvm-dis ld-temp.0.4.opt.bc -o - | FileCheck %s
+; RUN: llvm-dis ld-temp.0.5.precodegen.bc -o - | FileCheck %s
+; RUN: ls ld-temp.resolution.txt
+
+; CHECK: source_filename = "ld-temp.o"
+
+define i32 @main() {
+entry:
+  %call = call i32 @foo()
+  ret i32 %call
+}
+
+declare i32 @foo()
Index: llvm/lib/LTO/LTOCodeGenerator.cpp
===================================================================
--- llvm/lib/LTO/LTOCodeGenerator.cpp
+++ llvm/lib/LTO/LTOCodeGenerator.cpp
@@ -127,6 +127,10 @@
 cl::opt<std::string>
     LTOCSIRProfile("cs-profile-path",
                    cl::desc("Context sensitive profile file path"));
+
+static cl::opt<bool> LTOSaveTemps(
+    "lto-save-temps", cl::init(false),
+    cl::desc("Save temporary LTO files in the current working directory."));
 } // namespace llvm
 
 LTOCodeGenerator::LTOCodeGenerator(LLVMContext &Context)
@@ -143,6 +147,11 @@
 
   Config.RunCSIRInstr = LTORunCSIRInstr;
   Config.CSIRProfile = LTOCSIRProfile;
+
+  if (LTOSaveTemps)
+    if (Config.addSaveTemps("ld-temp.",
+                            /* UseInputModulePath */ true))
+      errs() << "Warning: failed to set up path to save temporary files\n";
 }
 
 LTOCodeGenerator::~LTOCodeGenerator() = default;
@@ -620,6 +629,9 @@
   // Add an appropriate DataLayout instance for this module...
   MergedModule->setDataLayout(TargetMach->createDataLayout());
 
+  if (Config.PostImportModuleHook)
+    Config.PostImportModuleHook(0, *MergedModule);
+
   if (!SaveIRBeforeOptPath.empty()) {
     std::error_code EC;
     raw_fd_ostream OS(SaveIRBeforeOptPath, EC, sys::fs::OF_None);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D98183.541242.patch
Type: text/x-patch
Size: 2041 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230717/678f1f7a/attachment.bin>


More information about the llvm-commits mailing list