diff options
Diffstat (limited to 'llvm/lib/IR/DIBuilder.cpp')
-rw-r--r-- | llvm/lib/IR/DIBuilder.cpp | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/llvm/lib/IR/DIBuilder.cpp b/llvm/lib/IR/DIBuilder.cpp index c6df3409a47..eb686aa4bec 100644 --- a/llvm/lib/IR/DIBuilder.cpp +++ b/llvm/lib/IR/DIBuilder.cpp @@ -25,23 +25,15 @@ using namespace llvm::dwarf; namespace { class HeaderBuilder { - /// \brief Whether there are any fields yet. - /// - /// Note that this is not equivalent to \c Chars.empty(), since \a concat() - /// may have been called already with an empty string. - bool IsEmpty; SmallVector<char, 256> Chars; public: - HeaderBuilder() : IsEmpty(true) {} + explicit HeaderBuilder(Twine T) { T.toVector(Chars); } HeaderBuilder(const HeaderBuilder &X) : Chars(X.Chars) {} HeaderBuilder(HeaderBuilder &&X) : Chars(std::move(X.Chars)) {} template <class Twineable> HeaderBuilder &concat(Twineable &&X) { - if (IsEmpty) - IsEmpty = false; - else - Chars.push_back(0); + Chars.push_back(0); Twine(X).toVector(Chars); return *this; } @@ -51,7 +43,7 @@ public: } static HeaderBuilder get(unsigned Tag) { - return HeaderBuilder().concat("0x" + Twine::utohexstr(Tag)); + return HeaderBuilder("0x" + Twine::utohexstr(Tag)); } }; } @@ -747,10 +739,8 @@ static HeaderBuilder setTypeFlagsInHeader(StringRef Header, Flags = 0; Flags |= FlagsToSet; - return HeaderBuilder() - .concat(I.getPrefix()) - .concat(Flags) - .concat(I.getSuffix()); + return HeaderBuilder(Twine(I.getPrefix())).concat(Flags).concat( + I.getSuffix()); } static DIType createTypeWithFlags(LLVMContext &Context, DIType Ty, |