On 5/13/19 9:09 PM, li...@linux.ibm.com wrote: > From: Kewen Lin <li...@linux.ibm.com> > > Previous version link for background: > https://gcc.gnu.org/ml/gcc-patches/2019-04/msg00912.html > > This hook is to predict whether one loop in gimple will > be transformed to low-overhead loop later in RTL, and > designed to be called in ivopts. > > "Since the low-overhead loop optimize transformation is > based on RTL, some of those checks are hard to be imitated > on gimple, so it's not possible to predict the current > loop will be transformed exactly in middle-end. But if we > can have most loop predicted precisely, it would be helpful. > It highly depends on target hook fine tuning. It's > acceptable to have some loops which can be transformed to > low-overhead loop but we don't catch. But we should try > our best to avoid to predict some loop as low-overhead loop > but which isn't." > > Bootstrapped and regression testing passed on powerpc64le. > > Is it ok for trunk? > > gcc/ChangeLog > > 2019-05-13 Kewen Lin <li...@gcc.gnu.org> > > PR middle-end/80791 > * target.def (predict_doloop_p): New hook. > * targhooks.h (default_predict_doloop_p): New declaration. > * targhooks.c (default_predict_doloop_p): New function. > * doc/tm.texi.in (TARGET_PREDICT_DOLOOP_P): New hook. > * doc/tm.texi: Regenerate. > * config/rs6000/rs6000.c (invalid_insn_for_doloop_p): New function. > (costly_iter_for_doloop_p): Likewise. > (rs6000_predict_doloop_p): Likewise. > (TARGET_PREDICT_DOLOOP_P): New macro. Trying to guess what the target is going to do, then changing the structure of the loops in gimple based on that guess -- is that really a good idea. It's fairly counter to many of the design goals around gimple.
jeff