<div dir="ltr">Thank you, this is very instructive. I soon realized I forgot to add SDNPVariadic in my node definition of return operator.<div>And thus even though the  LowerReturn() is implemented properly, the instructions for passing return value is eliminated.</div>

<div><br></div><div>Regards.<br><div><div class="gmail_extra"><br><div class="gmail_quote">2013/7/9 Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<div><br>
> The headache is when I pass option -O0 to llc, the generated codes are<br>
> correct. However, if I omit -O0 and use default compiling options, the<br>
> instruction "movi  r0, #1234" does not show.<br>
<br>
</div>It's probably being eliminated as dead code. You want to make sure<br>
that during ISelLowering your RET instruction has %R0 as one of its<br>
operands (check in the -view-isel-dags step).<br>
<br>
That's the most likely cause anyway. If not, posting the DAG might<br>
help, or the output of "llc -debug" on an equivalent .ll file.<br>
<br>
Cheers.<br>
<span><font color="#888888"><br>
Tim.<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>杨勇勇 (Yang Yong-Yong)
</div></div></div></div>