From 5f39dfd429f3715d7034820f73a71b99dc68af5e Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Tue, 20 Jan 2015 03:01:27 +0000 Subject: [PATCH] Revert "IR: Simplify DIBuilder's HeaderBuilder API, NFC" This reverts commit r226540, since I hit an unexpected bot failure [1]. I'll investigate. [1]: http://bb.pgr.jp/builders/cmake-llvm-x86_64-linux/builds/20244 llvm-svn: 226542 --- llvm/lib/IR/DIBuilder.cpp | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/llvm/lib/IR/DIBuilder.cpp b/llvm/lib/IR/DIBuilder.cpp index c6df340..eb686aa 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 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 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, -- 2.7.4