Robin Dapp <rd...@linux.ibm.com> writes: >> Looks like a nice optimisation, but could we just test whether the >> destination of a set isn't live on exit from the then block? I think >> we could do that on the fly during the main noce_convert_multiple_sets >> loop. > > I included this locally along with the rest of the remarks. Any comments > on the rest/bulk of the patch (the part trying to compare costs of both > cmovs "types")?
I'm still a bit worried about the overlap between the expanded noce_convert_multiple_sets and cond_move_process_if_block (5/9). It seems like we're making noce_convert_multiple_set handle most of the conditional move cases that cond_move_process_if_block can handle. But like you say, noce_convert_multiple_set is still restricted to half-diamonds, whereas cond_move_process_if_block can handle full diamonds. 3/9, 4/9 and 8/9 seems like good independent improvements. But for 5/9, 6/9 and 7/9, it looks to me like it would be better to improve cond_move_process_if_block so that it handles all the conditional move cases you're targetting. Definitely welcome other opinions though. :-) Thanks, Richard