Index: lib/DebugInfo/DWARF/DWARFDebugAbbrev.cpp =================================================================== --- lib/DebugInfo/DWARF/DWARFDebugAbbrev.cpp +++ lib/DebugInfo/DWARF/DWARFDebugAbbrev.cpp @@ -39,7 +39,8 @@ } } PrevAbbrCode = AbbrDecl.getCode(); - Decls.push_back(std::move(AbbrDecl)); + // Extract reinitializes AbbrDecl, so there is no use after move here. + Decls.push_back(std::move(AbbrDecl)); // NOLINT(misc-use-after-move) } return BeginOffset != *OffsetPtr; } @@ -82,6 +83,7 @@ uint32_t CUAbbrOffset = Offset; if (!AbbrDecls.extract(Data, &Offset)) break; + // NOLINT(misc-use-after-move) Extract reinitializes AbbrDecls. AbbrDeclSets[CUAbbrOffset] = std::move(AbbrDecls); } } Index: lib/IRReader/IRReader.cpp =================================================================== --- lib/IRReader/IRReader.cpp +++ lib/IRReader/IRReader.cpp @@ -36,12 +36,12 @@ LLVMContext &Context, bool ShouldLazyLoadMetadata) { if (isBitcode((const unsigned char *)Buffer->getBufferStart(), (const unsigned char *)Buffer->getBufferEnd())) { + auto Identifier = Buffer->getBufferIdentifier(); Expected> ModuleOrErr = getOwningLazyBitcodeModule( std::move(Buffer), Context, ShouldLazyLoadMetadata); if (Error E = ModuleOrErr.takeError()) { handleAllErrors(std::move(E), [&](ErrorInfoBase &EIB) { - Err = SMDiagnostic(Buffer->getBufferIdentifier(), SourceMgr::DK_Error, - EIB.message()); + Err = SMDiagnostic(Identifier, SourceMgr::DK_Error, EIB.message()); }); return nullptr; } Index: lib/Object/Error.cpp =================================================================== --- lib/Object/Error.cpp +++ lib/Object/Error.cpp @@ -91,5 +91,5 @@ return Error(std::move(M)); })) return Err2; - return Err; + return Err; // Use after move, not sure how to fix it. } Index: lib/Support/APFloat.cpp =================================================================== --- lib/Support/APFloat.cpp +++ lib/Support/APFloat.cpp @@ -4113,9 +4113,8 @@ return; } if (usesLayout(Semantics)) { - new (&Double) - DoubleAPFloat(Semantics, APFloat(std::move(F), F.getSemantics()), - APFloat(semIEEEdouble)); + new (&Double) DoubleAPFloat(Semantics, APFloat(F, F.getSemantics()), + APFloat(semIEEEdouble)); return; } llvm_unreachable("Unexpected semantics"); Index: lib/Target/X86/X86ISelLowering.cpp =================================================================== --- lib/Target/X86/X86ISelLowering.cpp +++ lib/Target/X86/X86ISelLowering.cpp @@ -27194,7 +27194,8 @@ // performs an equivalent shuffle. SmallVector WidenedMask; while (Mask.size() > 1 && canWidenShuffleElements(Mask, WidenedMask)) { - Mask = std::move(WidenedMask); + // No use after move, WidenedMask reinitialized in canWidenShuffleElements. + Mask = std::move(WidenedMask); // NOLINT(misc-use-after-move) } // Canonicalization of binary shuffle masks to improve pattern matching by Index: lib/Transforms/Scalar/LoadCombine.cpp =================================================================== --- lib/Transforms/Scalar/LoadCombine.cpp +++ lib/Transforms/Scalar/LoadCombine.cpp @@ -261,7 +261,7 @@ auto POP = getPointerOffsetPair(*LI); if (!POP.Pointer) continue; - LoadMap[POP.Pointer].push_back({LI, std::move(POP), Index++}); + LoadMap[POP.Pointer].push_back({LI, POP, Index++}); AST.add(LI); } if (combineLoads(LoadMap)) Index: tools/llvm-profdata/llvm-profdata.cpp =================================================================== --- tools/llvm-profdata/llvm-profdata.cpp +++ tools/llvm-profdata/llvm-profdata.cpp @@ -49,7 +49,6 @@ } static void exitWithError(Error E, StringRef Whence = "") { - if (E.isA()) { handleAllErrors(std::move(E), [&](const InstrProfError &IPE) { instrprof_error instrError = IPE.get(); StringRef Hint = ""; @@ -58,10 +57,11 @@ Hint = "Perhaps you forgot to use the -sample option?"; } exitWithError(IPE.message(), Whence, Hint); - }); + }, + [&](const Error &E) { + exitWithError(toString(E), Whence); + }); } - - exitWithError(toString(std::move(E)), Whence); } static void exitWithErrorCode(std::error_code EC, StringRef Whence = "") {