This makes it explicit that ownership is taken. Also replace all new
with make_unique<> at call sites.
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
llvm/include/llvm/IR/LLVMContext.h | ||
---|---|---|
197 ↗ | (On Diff #78618) | Pass by value if always moving doesn't apply to move-only types. Use && to avoid a temporary. |
llvm/include/llvm/IR/LLVMContext.h | ||
---|---|---|
197 ↗ | (On Diff #78618) | Functions that accept a parameter by value do so to allow the caller to choose whether to supply an lvalue that is copied or an rvalue that is moved without having to write overloads for both. |
llvm/include/llvm/IR/LLVMContext.h | ||
---|---|---|
197 ↗ | (On Diff #78618) | I see. It does not really sound idiomatic to me to have any unique_ptr passed by rvalue, you should try to submit a patch to the developer guide. (I'm not really convinced by the "avoid the construction and destruction of a temporary" here, I don't expect the codegen to be any different) |
llvm/include/llvm/IR/LLVMContext.h | ||
---|---|---|
197 ↗ | (On Diff #78618) | There are a few places where unique_ptrs are passed by rvalue: llvm/Transforms/Utils/MemorySSA.h 681: Result(std::unique_ptr<MemorySSA> &&MSSA) : MSSA(std::move(MSSA)) {} llvm/Support/TargetRegistry.h 77: std::unique_ptr<MCRelocationInfo> &&RelInfo); 112: TargetMachine &TM, std::unique_ptr<MCStreamer> &&Streamer); 157: std::unique_ptr<MCRelocationInfo> &&RelInfo); 396: std::unique_ptr<MCStreamer> &&Streamer) const { 531: std::unique_ptr<MCRelocationInfo> &&RelInfo) const { 1125: std::unique_ptr<MCStreamer> &&Streamer) { llvm/Bitcode/BitcodeReader.h 92: getOwningLazyBitcodeModule(std::unique_ptr<MemoryBuffer> &&Buffer, but there are lots of places it's passed by value. There's usually no difference in codegen, but not always: |
llvm/include/llvm/IR/LLVMContext.h | ||
---|---|---|
197 ↗ | (On Diff #78618) | Did you end up submitting a patch for the dev guide for move-only type? |
llvm/include/llvm/IR/LLVMContext.h | ||
---|---|---|
197 ↗ | (On Diff #78618) | No. |
llvm/include/llvm/IR/LLVMContext.h | ||
---|---|---|
197 ↗ | (On Diff #78618) | We could still add a guideline for "move-only types other than unique_ptr", however it might not be frequent enough that it is worth codifying it. |