diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -495,6 +495,9 @@ 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 --- /dev/null +++ b/lld/test/ELF/reproduce-lto.s @@ -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