<div dir="ltr">Definitely for RISC-V in the gnu linker, which also relaxes function calls that turn out to be within +/-1MB, and I think global/thread local variables that turn out to be in the first 4 KB. Both of those change from sequences of two 32-bit instructions to a single instruction (possibly even a 16 bit instruction).<div><br></div><div>Most targets could probably benefit from things like, but perhaps don't bother.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 27, 2017 at 6:52 PM, Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 27 February 2017 at 07:50, Bruce Hoult via llvm-dev<br>
<span class=""><<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br>
> Not possible, even in theory, because the size of some instructions -- such<br>
> as relative branches -- are not known until link time, and that affects the<br>
> offsets of instructions following them.<br>
<br>
</span>Which target's that for? You'd need function-internal relocations for<br>
each BB to make that work, x86 branches only get relaxed at<br>
compile-time as far as I was aware.<br>
<br>
Cheers.<br>
<span class="HOEnZb"><font color="#888888"><br>
Tim.<br>
<br>
--<br>
This message has been scanned for viruses and<br>
dangerous content by MailScanner, and is<br>
believed to be clean.<br>
<br>
</font></span></blockquote></div><br></div>