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.s b/lld/test/ELF/reproduce.s --- a/lld/test/ELF/reproduce.s +++ b/lld/test/ELF/reproduce.s @@ -3,10 +3,13 @@ # RUN: rm -rf %t.dir # RUN: mkdir -p %t.dir/build1 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.dir/build1/foo.o +# RUN: echo "# empty lto sample profile" > %t.dir/build1/empty_profile.txt # RUN: cd %t.dir -# RUN: ld.lld --hash-style=gnu build1/foo.o -o bar -shared --as-needed --reproduce repro1.tar +# RUN: ld.lld --hash-style=gnu build1/foo.o -o bar -shared --as-needed --reproduce repro1.tar --lto-sample-profile=%t.dir/build1/empty_profile.txt # RUN: tar xOf repro1.tar repro1/%:t.dir/build1/foo.o > build1-foo.o # RUN: cmp build1/foo.o build1-foo.o +# RUN: tar tvf repro1.tar | FileCheck %s --check-prefix=LTO_SAMPLE_PROFILE +# LTO_SAMPLE_PROFILE: repro1/{{.*}}/empty_profile.txt # RUN: tar xf repro1.tar repro1/response.txt repro1/version.txt # RUN: FileCheck %s --check-prefix=RSP1 < repro1/response.txt