> The headache is when I pass option -O0 to llc, the generated codes are
> correct. However, if I omit -O0 and use default compiling options, the
> instruction "movi r0, #1234" does not show.
It's probably being eliminated as dead code. You want to make sure
that during ISelLowering your RET instruction has %R0 as one of its
operands (check in the -view-isel-dags step).
That's the most likely cause anyway. If not, posting the DAG might
help, or the output of "llc -debug" on an equivalent .ll file.