aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Biryukov <ibiryukov@google.com>2022-08-11 11:48:28 +0200
committerIlya Biryukov <ibiryukov@google.com>2022-08-11 11:53:24 +0200
commit7c80c4d67716308dc0f382be88bbe73dd293892c (patch)
tree57418acee2dd99cf1a09bd3009d7493bcf30cbeb
parent940733d6a0a92245912361bf116514172a15f4f8 (diff)
downloadllvm-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.cpp15
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)