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
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to