Hi, > > Hi, > > > > This is a simple fix for pr95855. > > > > With this fix, pass_split_paths can recognize the if-conversion > opportunity of the testcase and doesn't duplicate the corresponding block. > > > > Added one testcase for this. Bootstrap and tested on both aarch64 and > x86 Linux platform, no new regression witnessed. > > > > Ok for trunk? > > Can you try using the num_stmts_in_pred[12] counts instead of using > empty_block_p?
It' ok to using num_stmts_in_pred[12] to judge whether the pred[12] is empty since bb's immediate dominator can't meet the constraints "single_pred_p (pred[12]) && single_pred (pred[12]) == pred[21]". > > Your matching doesn't allow for FP constants like > > dmax[0] = d1[i] < 1.0 ? 1.0 : d1[i]; > > since FP constants are not shared. You likely want to use operand_equal_p to > do the PHI argument comparison. That's right, after using operand_equal_p instead of == to do the PHI argument Comparison, the mentioned case can be covered as well. > > Thanks, > Richard. Thanks for your suggestions. We have revised our patch based on your suggestions. Bootstrap and tested on both aarch64 and x86 Linux platform. Does the v1 patch looks better? Yang Yang +2020-06-30 Yang Yang <yangyang...@huawei.com> + + PR tree-optimization/95855 + * gimple-ssa-split-paths.c (is_feasible_trace): Add extra + checks to recognize a missed if-conversion opportunity when + judging whether to duplicate a block. + +2020-06-30 Yang Yang <yangyang...@huawei.com> + + PR tree-optimization/95855 + * gcc.dg/tree-ssa/split-paths-12.c: New testcase. +
PR95855-v1.patch
Description: PR95855-v1.patch