[ELF] --reproduce should include lto sample profile
authorChristy Lee <christylee@fb.com>
Tue, 28 Jul 2020 16:41:27 +0000 (09:41 -0700)
committerWenlei He <aktoon@gmail.com>
Tue, 28 Jul 2020 16:41:41 +0000 (09:41 -0700)
Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D84569

lld/ELF/Driver.cpp
lld/test/ELF/reproduce-lto.s [new file with mode: 0644]

index 30bff94..64a41ba 100644 (file)
@@ -495,6 +495,9 @@ void LinkerDriver::main(ArrayRef<const char *> argsArr) {
       tar = std::move(*errOrWriter);
       tar->append("response.txt", createResponseFile(args));
       tar->append("version.txt", getLLDVersion() + "\n");
+      StringRef ltoSampleProfile = args.getLastArgValue(OPT_lto_sample_profile);
+      if (!ltoSampleProfile.empty())
+        readFile(ltoSampleProfile);
     } else {
       error("--reproduce: " + toString(errOrWriter.takeError()));
     }
diff --git a/lld/test/ELF/reproduce-lto.s b/lld/test/ELF/reproduce-lto.s
new file mode 100644 (file)
index 0000000..e7c3ece
--- /dev/null
@@ -0,0 +1,10 @@
+# REQUIRES: x86
+
+# RUN: rm -rf %t.dir
+# RUN: mkdir -p %t.dir/build1
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.dir/build1/foo.o
+# RUN: echo > %t.dir/build1/empty_profile.txt
+# RUN: cd %t.dir
+# RUN: ld.lld build1/foo.o -o /dev/null --reproduce repro1.tar --lto-sample-profile=%t.dir/build1/empty_profile.txt
+# RUN: tar tvf repro1.tar | FileCheck %s
+# CHECK: repro1/{{.*}}/empty_profile.txt