<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Sep 16, 2014 at 10:46 PM, Joerg Sonnenberger <span dir="ltr"><<a href="mailto:joerg@britannica.bec.de" target="_blank">joerg@britannica.bec.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi all,<br>
all ELF platforms at least and likely all others too allow something<br>
like the following:<br>
<br>
    .text<br>
    .asciz "arbitrary long string"<br>
    .p2align 3<br>
<br>
Depending on the size of the string, MCAsmBackend::writeNopData is<br>
called to pad text. For x86 and other backends with byte-sized<br>
instructions, this is no problem. Some backends like ARM and PPC<br>
flush explicitly to 16bit/32bit boundaries. There is an interested<br>
question on whether the non-instructions should be leading or trailing<br>
-- I think the behavior in ARM and PPC is wrong in this regard.</blockquote><div><br></div><div>I am pretty sure I implemented the PowerPC behavior in r191426.</div><div><br></div><div>I would be in favor of the following:</div><div>1. If the start is aligned *and* the length is aligned, use nops.</div><div>2. If the start is aligned but the length is not aligned, insert as many nops possible but pad out with zero.</div><div>3. Otherwise (if the start is misaligned), use *just* zeros.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> The R600<br>
backend seems to be just broken by not writing anything. This leaves<br>
SPARC and Mips. Both currently just return false if the padding is not a<br>
multiply of 32bit and the caller just reports an error.<br>
<br>
All this makes me wonder:<br>
(1) Why do we allow the backend to fail at all? Shouldn't the<br>
"pad-with-0" or so behavior be the default?<br>
(2) What is the expected order? Pad to instruction size first or last?<br>
<br>
Joerg<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</blockquote></div><br></div></div>