On Tue, Dec 20, 2016 at 11:27:18AM -0600, Pat Haugen wrote: > This patch attempts to fix problems with the first scheduling pass creating > too much register pressure. It does this by enabling the target hook to > compute the pressure classes for rs6000 target since the first thing I > observed while investigating the testcase in the subject PR is that IRA was > picking NON_SPECIAL_REGS as a pressure class which led to the sched-pressure > code computing too high of a value for number of regs available for pseudos > preferring GENERAL_REGS. It also enables -fsched-pressure by default, using > the 'model' algorithm. > > I ran various runs of cpu20006 to determine the set of pressure classes and > which sched-pressure algorithm to use. Net result is that with these patches > I see 6 benchmarks improve in the 2.4-6% range but there are also a couple 2% > degradations which will need follow up in GCC 8. There was also one benchmark > that showed a much bigger improvement with the 'weighted' sched-pressure > algorithm that also needs follow up ('weighted' was not chosen as default > since it showed more degradations). > > Bootstrap/regtest on powerpc64/powerpc64le. There were 2 testcases that > failed (sms-3.c/sms-6.c) but I have submitted a separate patch to fix those. > Ok for trunk?
Okay. Thanks! Segher > 2016-12-20 Pat Haugen <pthau...@us.ibm.com> > > PR rtl-optimization/11488 > * common/config/rs6000/rs6000-common.c > (rs6000_option_optimization_table): Enable -fsched-pressure. > * config/rs6000/rs6000.c (TARGET_COMPUTE_PRESSURE_CLASSES): Define > target hook. > (rs6000_option_override_internal): Set default -fsched-pressure > algorithm. > (rs6000_compute_pressure_classes): Implement target hook.