Jakob, one more hint, I've placed some asserts around the code you added and noticed that the InlineSpiller::insertReload() function is not being called.<br><br><div class="gmail_quote">2012/7/14 Borja Ferrer <span dir="ltr"><<a href="mailto:borja.ferav@gmail.com" target="_blank">borja.ferav@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Jakob,<br><br>I'm still getting the error, I can give you any other debug info you need. I haven't pasted the regalloc debug info here because it is quite huge, but if you tell me what specific details you need I will include them.<br>

<br>Thanks for your help!<div class="HOEnZb"><div class="h5"><br><br><div class="gmail_quote">2012/7/14 Jakob Stoklund Olesen <span dir="ltr"><<a href="mailto:stoklund@2pi.dk" target="_blank">stoklund@2pi.dk</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><br>
On Jul 14, 2012, at 10:09 AM, Borja Ferrer <<a href="mailto:borja.ferav@gmail.com" target="_blank">borja.ferav@gmail.com</a>> wrote:<br>
<br>
> Hello,<br>
><br>
> I'm getting a machine verifier error after introducing the earlyclobber constraint to some instructions where the src and dest regs can't be the same. The offending instruction pattern is this one:<br>
><br>
> let canFoldAsLoad = 1,<br>
> isReMaterializable = 1,<br>
> Constraints = "@earlyclobber $dst" in<br>
> def LDDWRdPtrQ : Inst<(outs DREGS:$dst),<br>
>                         (ins memri:$src),<br>
>                         "lddw\t$dst, $src",<br>
>                         [(set DREGS:$dst, (load addr:$src))]>;<br>
><br>
> This is just a load with displacement instruction of the form "load reg, [reg_addr+<offs>]", where reg_addr and dest can't be the same register.<br>
><br>
> This caused the following verifier error:<br>
><br>
> *** Bad machine code: No live range at def ***<br>
> - function:    f3<br>
> - basic block: entry 0x9d68664 (BB#0) [0B;5056B)<br>
> - instruction: 3688B    %vreg96<earlyclobber,def> = LDDWRdPtrQ <fi#0>, 0; mem:LD2[FixedStack0](align=1) DREGS:%vreg96<br>
> - operand 0:   %vreg96<earlyclobber,def><br>
> 3688e is not live in [3688r,4480r:0)  0@3688r<br>
><br>
> *** Bad machine code: Early clobber def must be at an early-clobber slot ***<br>
> - function:    f3<br>
> Valno #0 is defined at 3688r in [3688r,4480r:0)  0@3688r<br>
><br>
> I've noticed this only happens when loading from frame indexes like in this case, regular loads won't error.<br>
<br>
</div>Spiller bug, should be fixed in r160219.<br>
<span><font color="#888888"><br>
/jakob<br>
<br>
</font></span></blockquote></div><br>
</div></div></blockquote></div><br>