[PowerPC] Implement writeNopData

This implements a proper PPCAsmBackend::writeNopData routine
that actually writes PowerPC nop instructions.

This fixes the last remaining difference in object file output
(text section) between the integrated assembler and GNU as
that I've seen anywhere.

llvm-svn: 185662
This commit is contained in:
Ulrich Weigand 2013-07-04 18:28:46 +00:00
parent be0b55d121
commit d3ac7c058b
2 changed files with 17 additions and 4 deletions

View File

@ -148,10 +148,14 @@ public:
}
bool writeNopData(uint64_t Count, MCObjectWriter *OW) const {
// FIXME: Zero fill for now. That's not right, but at least will get the
// section size right.
for (uint64_t i = 0; i != Count; ++i)
OW->Write8(0);
// Can't emit NOP with size not multiple of 32-bits
if (Count % 4 != 0)
return false;
uint64_t NumNops = Count / 4;
for (uint64_t i = 0; i != NumNops; ++i)
OW->Write32(0x60000000);
return true;
}

View File

@ -0,0 +1,9 @@
# RUN: llvm-mc -filetype=obj -triple=powerpc-unknown-linux-gnu %s | llvm-readobj -s -sd - | FileCheck %s
# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux-gnu %s | llvm-readobj -s -sd - | FileCheck %s
blr
.p2align 3
blr
# CHECK: 0000: 4E800020 60000000 4E800020