mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 21:29:41 +00:00
IR: Simplify DIBuilder's HeaderBuilder API, NFC
Change `HeaderBuilder` API to work well even when it's not starting with a tag. There's already one case like this, and the tag is moving elsewhere as part of PR22235. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226540 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cb96a3132c
commit
eefbe59844
@ -25,15 +25,23 @@ 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:
|
||||
explicit HeaderBuilder(Twine T) { T.toVector(Chars); }
|
||||
HeaderBuilder() : IsEmpty(true) {}
|
||||
HeaderBuilder(const HeaderBuilder &X) : Chars(X.Chars) {}
|
||||
HeaderBuilder(HeaderBuilder &&X) : Chars(std::move(X.Chars)) {}
|
||||
|
||||
template <class Twineable> HeaderBuilder &concat(Twineable &&X) {
|
||||
Chars.push_back(0);
|
||||
if (IsEmpty)
|
||||
IsEmpty = false;
|
||||
else
|
||||
Chars.push_back(0);
|
||||
Twine(X).toVector(Chars);
|
||||
return *this;
|
||||
}
|
||||
@ -43,7 +51,7 @@ public:
|
||||
}
|
||||
|
||||
static HeaderBuilder get(unsigned Tag) {
|
||||
return HeaderBuilder("0x" + Twine::utohexstr(Tag));
|
||||
return HeaderBuilder().concat("0x" + Twine::utohexstr(Tag));
|
||||
}
|
||||
};
|
||||
}
|
||||
@ -739,8 +747,10 @@ static HeaderBuilder setTypeFlagsInHeader(StringRef Header,
|
||||
Flags = 0;
|
||||
Flags |= FlagsToSet;
|
||||
|
||||
return HeaderBuilder(Twine(I.getPrefix())).concat(Flags).concat(
|
||||
I.getSuffix());
|
||||
return HeaderBuilder()
|
||||
.concat(I.getPrefix())
|
||||
.concat(Flags)
|
||||
.concat(I.getSuffix());
|
||||
}
|
||||
|
||||
static DIType createTypeWithFlags(LLVMContext &Context, DIType Ty,
|
||||
|
Loading…
x
Reference in New Issue
Block a user