[LLVMdev] Will any pass change simple return branch into select/return pair?

Zhou Sheng zhousheng00 at gmail.com
Thu Nov 22 19:07:06 PST 2007


Hi,

Can any llvm pass change simple return branch into select/return pair?
For example:

define i10 @mod_N(i10 zeroext  %a) zeroext  {
entry:
    %tmp2 = icmp ugt i10 %a, -400       ; <i1> [#uses=1]
    br i1 %tmp2, label %cond_true, label %return

cond_true:      ; preds = %entry
    %tmp5 = add i10 %a, 400     ; <i10> [#uses=1]
    ret i10 %tmp5

return:     ; preds = %entry
    ret i10 %a
}

Changed into:

define i10 @mod_N(i10 zeroext  %a) zeroext  {
entry:
    %tmp2 = icmp ugt i10 %a, -400       ; <i1> [#uses=1]
    %tmp5 = add i10 %a, 400     ; <i10> [#uses=1]
    %retval = select i1 %tmp2, i10 %tmp5, i10 %a        ; <i10> [#uses=1]
    ret i10 %retval
}

Thanks in advance.

Sheng.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20071123/a7343111/attachment.html>


More information about the llvm-dev mailing list