forked from OSchip/llvm-project
add an MCAsmStreamer::EmitFill specialization of EmitFill that
emits one directive instead of N. Not doing this would be a significant regression on the # bytes generated by .fill. llvm-svn: 93889
This commit is contained in:
parent
0c65fd4902
commit
4340cb3246
|
@ -61,6 +61,7 @@ public:
|
||||||
virtual void EmitBytes(StringRef Data);
|
virtual void EmitBytes(StringRef Data);
|
||||||
|
|
||||||
virtual void EmitValue(const MCExpr *Value, unsigned Size);
|
virtual void EmitValue(const MCExpr *Value, unsigned Size);
|
||||||
|
virtual void EmitFill(uint64_t NumBytes, uint8_t FillValue);
|
||||||
|
|
||||||
virtual void EmitValueToAlignment(unsigned ByteAlignment, int64_t Value = 0,
|
virtual void EmitValueToAlignment(unsigned ByteAlignment, int64_t Value = 0,
|
||||||
unsigned ValueSize = 1,
|
unsigned ValueSize = 1,
|
||||||
|
@ -199,6 +200,20 @@ void MCAsmStreamer::EmitValue(const MCExpr *Value, unsigned Size) {
|
||||||
OS << ' ' << *truncateToSize(Value, Size) << '\n';
|
OS << ' ' << *truncateToSize(Value, Size) << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// EmitFill - Emit NumBytes bytes worth of the value specified by
|
||||||
|
/// FillValue. This implements directives such as '.space'.
|
||||||
|
void MCAsmStreamer::EmitFill(uint64_t NumBytes, uint8_t FillValue) {
|
||||||
|
if (const char *ZeroDirective = MAI.getZeroDirective()) {
|
||||||
|
OS << ZeroDirective << NumBytes;
|
||||||
|
if (FillValue != 0)
|
||||||
|
OS << ',' << (int)FillValue;
|
||||||
|
OS << '\n';
|
||||||
|
} else {
|
||||||
|
// Emit a byte at a time.
|
||||||
|
MCStreamer::EmitFill(NumBytes, FillValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MCAsmStreamer::EmitValueToAlignment(unsigned ByteAlignment, int64_t Value,
|
void MCAsmStreamer::EmitValueToAlignment(unsigned ByteAlignment, int64_t Value,
|
||||||
unsigned ValueSize,
|
unsigned ValueSize,
|
||||||
unsigned MaxBytesToEmit) {
|
unsigned MaxBytesToEmit) {
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
# RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s
|
# RUN: llvm-mc -triple i386-apple-darwin %s | FileCheck %s
|
||||||
|
|
||||||
# CHECK: TEST0:
|
# CHECK: TEST0:
|
||||||
# CHECK: .byte 0
|
# CHECK: .space 1
|
||||||
TEST0:
|
TEST0:
|
||||||
.space 1
|
.space 1
|
||||||
|
|
||||||
# CHECK: TEST1:
|
# CHECK: TEST1:
|
||||||
# CHECK: .byte 3
|
# CHECK: .space 2,3
|
||||||
# CHECK: .byte 3
|
|
||||||
TEST1:
|
TEST1:
|
||||||
.space 2, 3
|
.space 2, 3
|
||||||
|
|
Loading…
Reference in New Issue