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>