Hi,<br><br>Can any llvm pass change simple return branch into select/return pair? <br>For example:<br><br>define i10 @mod_N(i10 zeroext  %a) zeroext  {<br>entry:<br>    %tmp2 = icmp ugt i10 %a, -400       ; <i1> [#uses=1]
<br>    br i1 %tmp2, label %cond_true, label %return<br><br>cond_true:      ; preds = %entry<br>    %tmp5 = add i10 %a, 400     ; <i10> [#uses=1]<br>    ret i10 %tmp5<br><br>return:     ; preds = %entry<br>    ret i10 %a
<br>}<br><br>Changed into:<br><br>define i10 @mod_N(i10 zeroext  %a) zeroext  {<br>entry:<br>    %tmp2 = icmp ugt i10 %a, -400       ; <i1> [#uses=1]<br>    %tmp5 = add i10 %a, 400     ; <i10> [#uses=1]<br>    %retval = select i1 %tmp2, i10 %tmp5, i10 %a        ; <i10> [#uses=1]
<br>    ret i10 %retval<br>}<br><br>Thanks in advance.<br><br>Sheng.<br><br><br>