[llvm-commits] [llvm] r93890 - in /llvm/trunk/lib: CodeGen/AsmPrinter/AsmPrinter.cpp MC/MCAsmStreamer.cpp
Chris Lattner
sabre at nondot.org
Tue Jan 19 10:58:54 PST 2010
Author: lattner
Date: Tue Jan 19 12:58:52 2010
New Revision: 93890
URL: http://llvm.org/viewvc/llvm-project?rev=93890&view=rev
Log:
mcstreamerize AsmPrinter::EmitZeros, at least when emitting to the
default address space.
Modified:
llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
llvm/trunk/lib/MC/MCAsmStreamer.cpp
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=93890&r1=93889&r2=93890&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Tue Jan 19 12:58:52 2010
@@ -436,7 +436,7 @@
// Emit inter-object padding for alignment.
unsigned AlignMask = CPE.getAlignment() - 1;
unsigned NewOffset = (Offset + AlignMask) & ~AlignMask;
- EmitZeros(NewOffset - Offset);
+ OutStreamer.EmitFill(NewOffset - Offset);
const Type *Ty = CPE.getType();
Offset = NewOffset + TM.getTargetData()->getTypeAllocSize(Ty);
@@ -917,8 +917,8 @@
///
void AsmPrinter::EmitZeros(uint64_t NumZeros, unsigned AddrSpace) const {
if (NumZeros == 0) return;
- if (MAI->getZeroDirective()) {
- O << MAI->getZeroDirective() << NumZeros << '\n';
+ if (MAI->getZeroDirective() || AddrSpace == 0) {
+ OutStreamer.EmitFill(NumZeros);
} else {
for (; NumZeros; --NumZeros)
O << MAI->getData8bitsDirective(AddrSpace) << "0\n";
@@ -1417,13 +1417,11 @@
const Type *type = CV->getType();
unsigned Size = TD->getTypeAllocSize(type);
- if (CV->isNullValue() || isa<UndefValue>(CV)) {
- EmitZeros(Size, AddrSpace);
- return;
- }
+ if (CV->isNullValue() || isa<UndefValue>(CV))
+ return EmitZeros(Size, AddrSpace);
if (const ConstantArray *CVA = dyn_cast<ConstantArray>(CV)) {
- EmitGlobalConstantArray(CVA , AddrSpace);
+ EmitGlobalConstantArray(CVA, AddrSpace);
return;
}
Modified: llvm/trunk/lib/MC/MCAsmStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmStreamer.cpp?rev=93890&r1=93889&r2=93890&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCAsmStreamer.cpp (original)
+++ llvm/trunk/lib/MC/MCAsmStreamer.cpp Tue Jan 19 12:58:52 2010
@@ -203,6 +203,8 @@
/// 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 (NumBytes == 0) return;
+
if (const char *ZeroDirective = MAI.getZeroDirective()) {
OS << ZeroDirective << NumBytes;
if (FillValue != 0)
More information about the llvm-commits
mailing list