mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
Provide a shortcut for MCObjectStreamer when emitting fills.
Reduces runtime of i386-large-relocations.s by 10x in Release builds, even more in Debug+Asserts builds. llvm-svn: 164945
This commit is contained in:
parent
6be8e1c6b5
commit
56415ad3cd
@ -81,6 +81,8 @@ public:
|
||||
const MCSymbol *Label);
|
||||
virtual void EmitGPRel32Value(const MCExpr *Value);
|
||||
virtual void EmitGPRel64Value(const MCExpr *Value);
|
||||
virtual void EmitFill(uint64_t NumBytes, uint8_t FillValue,
|
||||
unsigned AddrSpace);
|
||||
virtual void FinishImpl();
|
||||
|
||||
/// @}
|
||||
|
@ -270,6 +270,14 @@ void MCObjectStreamer::EmitGPRel64Value(const MCExpr *Value) {
|
||||
DF->getContents().resize(DF->getContents().size() + 8, 0);
|
||||
}
|
||||
|
||||
void MCObjectStreamer::EmitFill(uint64_t NumBytes, uint8_t FillValue,
|
||||
unsigned AddrSpace) {
|
||||
assert(AddrSpace == 0 && "Address space must be 0!");
|
||||
// FIXME: A MCFillFragment would be more memory efficient but MCExpr has
|
||||
// problems evaluating expressions across multiple fragments.
|
||||
getOrCreateDataFragment()->getContents().append(NumBytes, FillValue);
|
||||
}
|
||||
|
||||
void MCObjectStreamer::FinishImpl() {
|
||||
// Dump out the dwarf file & directory tables and line tables.
|
||||
const MCSymbol *LineSectionSymbol = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user