nhaehnle created this revision.
Herald added subscribers: cfe-commits, hiraditya.
Herald added projects: clang, LLVM.
There are hundreds (thousands?) of instances of this warning left.
A blog post on the new warning in gcc 9 is in
https://developers.redhat.com/blog/2019/04/12/understanding-when-not-to-stdmove-in-c/
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D74672
Files:
clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
llvm/include/llvm/Bitstream/BitstreamReader.h
llvm/include/llvm/DebugInfo/CodeView/CVRecord.h
llvm/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
llvm/include/llvm/Object/ELF.h
llvm/include/llvm/Object/ELFObjectFile.h
llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp
llvm/lib/ObjectYAML/CodeViewYAMLTypes.cpp
llvm/lib/Support/APFloat.cpp
llvm/lib/Support/JSON.cpp
llvm/lib/Support/MemoryBuffer.cpp
llvm/lib/Support/Path.cpp
llvm/lib/Support/YAMLTraits.cpp
llvm/lib/TableGen/JSONBackend.cpp
llvm/lib/XRay/Profile.cpp
llvm/tools/obj2yaml/elf2yaml.cpp
llvm/utils/TableGen/GlobalISelEmitter.cpp
Index: llvm/utils/TableGen/GlobalISelEmitter.cpp
===================================================================
--- llvm/utils/TableGen/GlobalISelEmitter.cpp
+++ llvm/utils/TableGen/GlobalISelEmitter.cpp
@@ -3791,7 +3791,7 @@
if (auto Error =
importChildMatcher(Rule, InsnMatcher, SrcChild, OperandIsAPointer,
OperandIsImmArg, OpIdx++, TempOpIdx))
- return std::move(Error);
+ return Error;
}
}
@@ -4063,7 +4063,7 @@
auto InsertPtOrError = createAndImportSubInstructionRenderer(
++InsertPt, Rule, DstChild, TempRegID);
if (auto Error = InsertPtOrError.takeError())
- return std::move(Error);
+ return Error;
return InsertPtOrError.get();
}
@@ -4142,7 +4142,7 @@
const TreePatternNode *Dst) {
auto InsertPtOrError = createInstructionRenderer(M.actions_end(), M, Dst);
if (auto Error = InsertPtOrError.takeError())
- return std::move(Error);
+ return Error;
action_iterator InsertPt = InsertPtOrError.get();
BuildMIAction &DstMIBuilder = *static_cast<BuildMIAction *>(InsertPt->get());
@@ -4162,7 +4162,7 @@
if (auto Error = importExplicitUseRenderers(InsertPt, M, DstMIBuilder, Dst)
.takeError())
- return std::move(Error);
+ return Error;
return DstMIBuilder;
}
@@ -4176,7 +4176,7 @@
// TODO: Assert there's exactly one result.
if (auto Error = InsertPtOrError.takeError())
- return std::move(Error);
+ return Error;
BuildMIAction &DstMIBuilder =
*static_cast<BuildMIAction *>(InsertPtOrError.get()->get());
@@ -4187,7 +4187,7 @@
InsertPtOrError =
importExplicitUseRenderers(InsertPtOrError.get(), M, DstMIBuilder, Dst);
if (auto Error = InsertPtOrError.takeError())
- return std::move(Error);
+ return Error;
// We need to make sure that when we import an INSERT_SUBREG as a
// subinstruction that it ends up being constrained to the correct super
@@ -4359,7 +4359,7 @@
auto InsertPtOrError =
importExplicitUseRenderer(InsertPt, M, DstMIBuilder, ValChild);
if (auto Error = InsertPtOrError.takeError())
- return std::move(Error);
+ return Error;
InsertPt = InsertPtOrError.get();
DstMIBuilder.addRenderer<SubRegIndexRenderer>(SubIdx);
}
@@ -4420,7 +4420,7 @@
DagInit *DefaultOps = DstIOperand.Rec->getValueAsDag("DefaultOps");
if (auto Error = importDefaultOperandRenderers(
InsertPt, M, DstMIBuilder, DefaultOps))
- return std::move(Error);
+ return Error;
++NumDefaultOps;
continue;
}
@@ -4428,7 +4428,7 @@
auto InsertPtOrError = importExplicitUseRenderer(InsertPt, M, DstMIBuilder,
Dst->getChild(Child));
if (auto Error = InsertPtOrError.takeError())
- return std::move(Error);
+ return Error;
InsertPt = InsertPtOrError.get();
++Child;
}
@@ -4629,7 +4629,7 @@
llvm::to_string(*P.getDstPattern()));
if (auto Error = importRulePredicates(M, P.getPredicates()))
- return std::move(Error);
+ return Error;
// Next, analyze the pattern operators.
TreePatternNode *Src = P.getSrcPattern();
@@ -4669,7 +4669,7 @@
auto InsnMatcherOrError =
createAndImportSelDAGMatcher(M, InsnMatcherTemp, Src, TempOpIdx);
if (auto Error = InsnMatcherOrError.takeError())
- return std::move(Error);
+ return Error;
InstructionMatcher &InsnMatcher = InsnMatcherOrError.get();
if (Dst->isLeaf()) {
@@ -4697,7 +4697,7 @@
// We're done with this pattern! It's eligible for GISel emission; return
// it.
++NumPatternImported;
- return std::move(M);
+ return M;
}
return failedImport("Dst pattern root isn't a known leaf");
@@ -4787,13 +4787,13 @@
auto DstMIBuilderOrError =
createAndImportInstructionRenderer(M, InsnMatcher, Src, Dst);
if (auto Error = DstMIBuilderOrError.takeError())
- return std::move(Error);
+ return Error;
BuildMIAction &DstMIBuilder = DstMIBuilderOrError.get();
// Render the implicit defs.
// These are only added to the root of the result.
if (auto Error = importImplicitDefRenderers(DstMIBuilder, P.getDstRegs()))
- return std::move(Error);
+ return Error;
DstMIBuilder.chooseInsnToMutate(M);
@@ -4814,7 +4814,7 @@
// We're done with this pattern! It's eligible for GISel emission; return
// it.
++NumPatternImported;
- return std::move(M);
+ return M;
}
if (DstIName == "EXTRACT_SUBREG") {
@@ -4845,7 +4845,7 @@
// We're done with this pattern! It's eligible for GISel emission; return
// it.
++NumPatternImported;
- return std::move(M);
+ return M;
}
if (DstIName == "INSERT_SUBREG") {
@@ -4890,14 +4890,14 @@
M.addAction<ConstrainOperandToRegClassAction>(0, 0, **SuperClass);
M.addAction<ConstrainOperandToRegClassAction>(0, 2, **SubClass);
++NumPatternImported;
- return std::move(M);
+ return M;
}
M.addAction<ConstrainOperandsToDefinitionAction>(0);
// We're done with this pattern! It's eligible for GISel emission; return it.
++NumPatternImported;
- return std::move(M);
+ return M;
}
// Emit imm predicate table and an enum to reference them with.
Index: llvm/tools/obj2yaml/elf2yaml.cpp
===================================================================
--- llvm/tools/obj2yaml/elf2yaml.cpp
+++ llvm/tools/obj2yaml/elf2yaml.cpp
@@ -800,7 +800,7 @@
ELFDumper<ELFT>::dumpNoBitsSection(const Elf_Shdr *Shdr) {
auto S = std::make_unique<ELFYAML::NoBitsSection>();
if (Error E = dumpCommonSection(Shdr, *S))
- return std::move(E);
+ return E;
S->Size = Shdr->sh_size;
return S.release();
@@ -811,7 +811,7 @@
ELFDumper<ELFT>::dumpNoteSection(const Elf_Shdr *Shdr) {
auto S = std::make_unique<ELFYAML::NoteSection>();
if (Error E = dumpCommonSection(Shdr, *S))
- return std::move(E);
+ return E;
auto ContentOrErr = Obj.getSectionContents(Shdr);
if (!ContentOrErr)
@@ -847,7 +847,7 @@
ELFDumper<ELFT>::dumpHashSection(const Elf_Shdr *Shdr) {
auto S = std::make_unique<ELFYAML::HashSection>();
if (Error E = dumpCommonSection(Shdr, *S))
- return std::move(E);
+ return E;
auto ContentOrErr = Obj.getSectionContents(Shdr);
if (!ContentOrErr)
@@ -888,7 +888,7 @@
ELFDumper<ELFT>::dumpGnuHashSection(const Elf_Shdr *Shdr) {
auto S = std::make_unique<ELFYAML::GnuHashSection>();
if (Error E = dumpCommonSection(Shdr, *S))
- return std::move(E);
+ return E;
auto ContentOrErr = Obj.getSectionContents(Shdr);
if (!ContentOrErr)
@@ -1085,7 +1085,7 @@
Expected<ELFYAML::Group *> ELFDumper<ELFT>::dumpGroup(const Elf_Shdr *Shdr) {
auto S = std::make_unique<ELFYAML::Group>();
if (Error E = dumpCommonSection(Shdr, *S))
- return std::move(E);
+ return E;
// Get symbol with index sh_info. This symbol's name is the signature of the group.
Expected<StringRef> SymbolName = getSymbolName(Shdr->sh_link, Shdr->sh_info);
@@ -1121,7 +1121,7 @@
"Section type is not SHT_MIPS_ABIFLAGS");
auto S = std::make_unique<ELFYAML::MipsABIFlags>();
if (Error E = dumpCommonSection(Shdr, *S))
- return std::move(E);
+ return E;
auto ContentOrErr = Obj.getSectionContents(Shdr);
if (!ContentOrErr)
Index: llvm/lib/XRay/Profile.cpp
===================================================================
--- llvm/lib/XRay/Profile.cpp
+++ llvm/lib/XRay/Profile.cpp
@@ -90,7 +90,7 @@
CurrentOffset = Offset;
Path.push_back(FuncId);
} while (FuncId != 0);
- return std::move(Path);
+ return Path;
}
static Expected<Profile::Data> readData(DataExtractor &Extractor,
@@ -137,7 +137,7 @@
std::vector<Profile::FuncID> Path;
for (auto Node = It->second; Node; Node = Node->Caller)
Path.push_back(Node->Func);
- return std::move(Path);
+ return Path;
}
Profile::PathID Profile::internPath(ArrayRef<FuncID> P) {
@@ -308,7 +308,7 @@
if (auto E =
P.addBlock(Profile::Block{Profile::ThreadID{Header.Thread},
{{P.internPath(Path), std::move(Data)}}}))
- return std::move(E);
+ return E;
}
return P;
@@ -393,7 +393,7 @@
std::vector<std::pair<Profile::PathID, Profile::Data>>(
PathsData.begin(), PathsData.end()),
}))
- return std::move(E);
+ return E;
}
return P;
Index: llvm/lib/TableGen/JSONBackend.cpp
===================================================================
--- llvm/lib/TableGen/JSONBackend.cpp
+++ llvm/lib/TableGen/JSONBackend.cpp
@@ -54,7 +54,7 @@
json::Array array;
for (unsigned i = 0, limit = Bits->getNumBits(); i < limit; i++)
array.push_back(translateInit(*Bits->getBit(i)));
- return std::move(array);
+ return array;
} else if (auto *Int = dyn_cast<IntInit>(&I)) {
return Int->getValue();
} else if (auto *Str = dyn_cast<StringInit>(&I)) {
@@ -65,7 +65,7 @@
json::Array array;
for (auto val : *List)
array.push_back(translateInit(*val));
- return std::move(array);
+ return array;
}
// Init subclasses that we return as JSON objects containing a
@@ -79,17 +79,17 @@
if (auto *Def = dyn_cast<DefInit>(&I)) {
obj["kind"] = "def";
obj["def"] = Def->getDef()->getName();
- return std::move(obj);
+ return obj;
} else if (auto *Var = dyn_cast<VarInit>(&I)) {
obj["kind"] = "var";
obj["var"] = Var->getName();
- return std::move(obj);
+ return obj;
} else if (auto *VarBit = dyn_cast<VarBitInit>(&I)) {
if (auto *Var = dyn_cast<VarInit>(VarBit->getBitVar())) {
obj["kind"] = "varbit";
obj["var"] = Var->getName();
obj["index"] = VarBit->getBitNum();
- return std::move(obj);
+ return obj;
}
} else if (auto *Dag = dyn_cast<DagInit>(&I)) {
obj["kind"] = "dag";
@@ -107,7 +107,7 @@
args.push_back(std::move(arg));
}
obj["args"] = std::move(args);
- return std::move(obj);
+ return obj;
}
// Final fallback: anything that gets past here is simply given a
@@ -116,7 +116,7 @@
assert(!I.isConcrete());
obj["kind"] = "complex";
- return std::move(obj);
+ return obj;
}
void JSONEmitter::run(raw_ostream &OS) {
Index: llvm/lib/Support/YAMLTraits.cpp
===================================================================
--- llvm/lib/Support/YAMLTraits.cpp
+++ llvm/lib/Support/YAMLTraits.cpp
@@ -388,7 +388,7 @@
break;
SQHNode->Entries.push_back(std::move(Entry));
}
- return std::move(SQHNode);
+ return SQHNode;
} else if (MappingNode *Map = dyn_cast<MappingNode>(N)) {
auto mapHNode = std::make_unique<MapHNode>(N);
for (KeyValueNode &KVN : *Map) {
@@ -413,7 +413,7 @@
break;
mapHNode->Mapping[KeyStr] = std::move(ValueHNode);
}
- return std::move(mapHNode);
+ return mapHNode;
} else if (isa<NullNode>(N)) {
return std::make_unique<EmptyHNode>(N);
} else {
Index: llvm/lib/Support/Path.cpp
===================================================================
--- llvm/lib/Support/Path.cpp
+++ llvm/lib/Support/Path.cpp
@@ -1263,7 +1263,7 @@
return errorCodeToError(EC);
}
#endif
- return std::move(Ret);
+ return Ret;
}
}
Index: llvm/lib/Support/MemoryBuffer.cpp
===================================================================
--- llvm/lib/Support/MemoryBuffer.cpp
+++ llvm/lib/Support/MemoryBuffer.cpp
@@ -128,7 +128,7 @@
if (!Buf)
return make_error_code(errc::not_enough_memory);
memcpy(Buf->getBufferStart(), InputData.data(), InputData.size());
- return std::move(Buf);
+ return Buf;
}
std::unique_ptr<MemoryBuffer>
@@ -398,7 +398,7 @@
Offset, EC));
if (EC)
return EC;
- return std::move(Result);
+ return Result;
}
ErrorOr<std::unique_ptr<WriteThroughMemoryBuffer>>
@@ -450,7 +450,7 @@
new (NamedBufferAlloc(Filename)) MemoryBufferMMapFile<MB>(
RequiresNullTerminator, FD, MapSize, Offset, EC));
if (!EC)
- return std::move(Result);
+ return Result;
}
auto Buf = WritableMemoryBuffer::getNewUninitMemBuffer(MapSize, Filename);
@@ -475,7 +475,7 @@
Offset += *ReadBytes;
}
- return std::move(Buf);
+ return Buf;
}
ErrorOr<std::unique_ptr<MemoryBuffer>>
Index: llvm/lib/Support/JSON.cpp
===================================================================
--- llvm/lib/Support/JSON.cpp
+++ llvm/lib/Support/JSON.cpp
@@ -513,7 +513,7 @@
if (P.checkUTF8())
if (P.parseValue(E))
if (P.assertEnd())
- return std::move(E);
+ return E;
return P.takeError();
}
char ParseError::ID = 0;
Index: llvm/lib/Support/APFloat.cpp
===================================================================
--- llvm/lib/Support/APFloat.cpp
+++ llvm/lib/Support/APFloat.cpp
@@ -2507,7 +2507,7 @@
/* Scan the text. */
StringRef::iterator p = str.begin();
if (Error Err = interpretDecimal(p, str.end(), &D))
- return std::move(Err);
+ return Err;
/* Handle the quick cases. First the case of no significant digits,
i.e. zero, and then exponents that are obviously too large or too
Index: llvm/lib/ObjectYAML/CodeViewYAMLTypes.cpp
===================================================================
--- llvm/lib/ObjectYAML/CodeViewYAMLTypes.cpp
+++ llvm/lib/ObjectYAML/CodeViewYAMLTypes.cpp
@@ -671,7 +671,7 @@
auto Impl = std::make_shared<LeafRecordImpl<T>>(Type.kind());
if (auto EC = Impl->fromCodeViewRecord(Type))
- return std::move(EC);
+ return EC;
Result.Leaf = Impl;
return Result;
}
Index: llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp
===================================================================
--- llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp
+++ llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp
@@ -585,7 +585,7 @@
auto Impl = std::make_shared<SymbolType>(Symbol.kind());
if (auto EC = Impl->fromCodeViewSymbol(Symbol))
- return std::move(EC);
+ return EC;
Result.Symbol = Impl;
return Result;
}
Index: llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
===================================================================
--- llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
+++ llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
@@ -34,11 +34,11 @@
if (Pos != End) {
if (Pos->intersects(R))
- return std::move(Pos);
+ return Pos;
if (Pos != Begin) {
auto Iter = Pos - 1;
if (Iter->intersects(R))
- return std::move(Iter);
+ return Iter;
}
}
Index: llvm/include/llvm/Object/ELFObjectFile.h
===================================================================
--- llvm/include/llvm/Object/ELFObjectFile.h
+++ llvm/include/llvm/Object/ELFObjectFile.h
@@ -948,7 +948,7 @@
ELFObjectFile<ELFT>::create(MemoryBufferRef Object) {
auto EFOrErr = ELFFile<ELFT>::create(Object.getBuffer());
if (Error E = EFOrErr.takeError())
- return std::move(E);
+ return E;
auto EF = std::move(*EFOrErr);
auto SectionsOrErr = EF.sections();
Index: llvm/include/llvm/Object/ELF.h
===================================================================
--- llvm/include/llvm/Object/ELF.h
+++ llvm/include/llvm/Object/ELF.h
@@ -601,7 +601,7 @@
": expected SHT_STRTAB, but got " +
object::getELFSectionTypeName(
getHeader()->e_machine, Section->sh_type)))
- return std::move(E);
+ return E;
auto V = getSectionContentsAsArray<char>(Section);
if (!V)
Index: llvm/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
===================================================================
--- llvm/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
+++ llvm/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
@@ -48,7 +48,7 @@
template <typename T> static Expected<T> deserializeAs(CVSymbol Symbol) {
T Record(static_cast<SymbolRecordKind>(Symbol.kind()));
if (auto EC = deserializeAs<T>(Symbol, Record))
- return std::move(EC);
+ return EC;
return Record;
}
Index: llvm/include/llvm/DebugInfo/CodeView/CVRecord.h
===================================================================
--- llvm/include/llvm/DebugInfo/CodeView/CVRecord.h
+++ llvm/include/llvm/DebugInfo/CodeView/CVRecord.h
@@ -100,14 +100,14 @@
Reader.setOffset(Offset);
if (auto EC = Reader.readObject(Prefix))
- return std::move(EC);
+ return EC;
if (Prefix->RecordLen < 2)
return make_error<CodeViewError>(cv_error_code::corrupt_record);
Reader.setOffset(Offset);
ArrayRef<uint8_t> RawData;
if (auto EC = Reader.readBytes(RawData, Prefix->RecordLen + sizeof(uint16_t)))
- return std::move(EC);
+ return EC;
return codeview::CVRecord<Kind>(RawData);
}
Index: llvm/include/llvm/Bitstream/BitstreamReader.h
===================================================================
--- llvm/include/llvm/Bitstream/BitstreamReader.h
+++ llvm/include/llvm/Bitstream/BitstreamReader.h
@@ -209,7 +209,7 @@
unsigned BitsLeft = NumBits - BitsInCurWord;
if (Error fillResult = fillCurWord())
- return std::move(fillResult);
+ return fillResult;
// If we run out of data, abort.
if (BitsLeft > BitsInCurWord)
@@ -425,7 +425,7 @@
// We read and accumulate abbrev's, the client can't do anything with
// them anyway.
if (Error Err = ReadAbbrevRecord())
- return std::move(Err);
+ return Err;
continue;
}
@@ -448,7 +448,7 @@
// If we found a sub-block, just skip over it and check the next entry.
if (Error Err = SkipBlock())
- return std::move(Err);
+ return Err;
}
}
Index: clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
===================================================================
--- clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
+++ clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
@@ -744,7 +744,7 @@
if (Msg.empty())
return None;
- return std::move(Msg);
+ return Msg;
}
StringRef getTagDescription() const override {
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits