diff options
| author | Ilya Biryukov <ibiryukov@google.com> | 2022-08-11 11:48:28 +0200 |
|---|---|---|
| committer | Ilya Biryukov <ibiryukov@google.com> | 2022-08-11 11:53:24 +0200 |
| commit | 7c80c4d67716308dc0f382be88bbe73dd293892c (patch) | |
| tree | 57418acee2dd99cf1a09bd3009d7493bcf30cbeb | |
| parent | 940733d6a0a92245912361bf116514172a15f4f8 (diff) | |
| download | llvm-7c80c4d67716308dc0f382be88bbe73dd293892c.zip llvm-7c80c4d67716308dc0f382be88bbe73dd293892c.tar.gz llvm-7c80c4d67716308dc0f382be88bbe73dd293892c.tar.bz2 | |
[MC] NFC. Avoid redundant copies when constructing StructFieldInfo
Follow-up after D131595, see comments in the review thread.
The intention of having two constructors was to minimize the copies of
`vector`, but a lack of `std::move` on the call site caused the wrong
constructor to be called.
Switched to a single constructor that accepts a value.
Accepting by value allows to have a single constructor and still decide
to copy or move on the call site.
| -rw-r--r-- | llvm/lib/MC/MCParser/MasmParser.cpp | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/llvm/lib/MC/MCParser/MasmParser.cpp b/llvm/lib/MC/MCParser/MasmParser.cpp index 4f2a74e..5177798 100644 --- a/llvm/lib/MC/MCParser/MasmParser.cpp +++ b/llvm/lib/MC/MCParser/MasmParser.cpp @@ -168,8 +168,7 @@ struct StructFieldInfo { StructInfo Structure; StructFieldInfo() = default; - StructFieldInfo(const std::vector<StructInitializer> &V, StructInfo S); - StructFieldInfo(std::vector<StructInitializer> &&V, StructInfo S); + StructFieldInfo(std::vector<StructInitializer> V, StructInfo S); }; class FieldInitializer { @@ -218,15 +217,9 @@ struct FieldInfo { FieldInfo(FieldType FT) : Contents(FT) {} }; -StructFieldInfo::StructFieldInfo(const std::vector<StructInitializer> &V, +StructFieldInfo::StructFieldInfo(std::vector<StructInitializer> V, StructInfo S) { - Initializers = V; - Structure = S; -} - -StructFieldInfo::StructFieldInfo(std::vector<StructInitializer> &&V, - StructInfo S) { - Initializers = V; + Initializers = std::move(V); Structure = S; } @@ -290,7 +283,7 @@ FieldInitializer::FieldInitializer(SmallVector<APInt, 1> &&AsIntValues) FieldInitializer::FieldInitializer( std::vector<StructInitializer> &&Initializers, struct StructInfo Structure) : FT(FT_STRUCT) { - new (&StructInfo) StructFieldInfo(Initializers, Structure); + new (&StructInfo) StructFieldInfo(std::move(Initializers), Structure); } FieldInitializer::FieldInitializer(const FieldInitializer &Initializer) |
