From a9fd8b911331dad1b5f94e3aba5ce0927e632ade Mon Sep 17 00:00:00 2001 From: Joseph Huber Date: Wed, 22 Jun 2022 09:37:54 -0400 Subject: [PATCH] [LinkerWrapper] Fix calls to deleted Error constructor on older compilers Summary: A recent patch added some new code paths to the linker wrapper. Older compilers seem to have problems with returning errors wrapped in an Excepted type without explicitly moving them. This caused failures in some of the buildbots. This patch fixes that. --- clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp index 75dee95..f21f144 100644 --- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp +++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp @@ -1022,7 +1022,7 @@ Expected writeOffloadFile(const OffloadFile &File) { if (Error Err = createOutputFile(Prefix + "-" + Binary.getTriple() + "-" + Binary.getArch(), Suffix, TempFile)) - return Err; + return std::move(Err); Expected> OutputOrErr = FileOutputBuffer::create(TempFile, Binary.getImage().size()); @@ -1032,7 +1032,7 @@ Expected writeOffloadFile(const OffloadFile &File) { std::copy(Binary.getImage().bytes_begin(), Binary.getImage().bytes_end(), Output->getBufferStart()); if (Error E = Output->commit()) - return E; + return std::move(E); return static_cast(TempFile); } @@ -1188,7 +1188,7 @@ linkAndWrapDeviceFiles(SmallVectorImpl &LinkerInputFiles) { // First link and remove all the input files containing bitcode. SmallVector InputFiles; if (Error Err = linkBitcodeFiles(Input, InputFiles, Triple, Arch)) - return Err; + return std::move(Err); // Write any remaining device inputs to an output file for the linker job. for (const OffloadFile &File : Input) { -- 2.7.4