Re: Fw: GSoC topic: Implement hot cold splitting at GIMPLE IR level

2020-03-17 Thread Richard Biener via Gcc
by OpenMP outlining (but not IPA split as Honza said). Richard. > -Aditya > > From: Jakub Jelinek > Sent: Monday, March 16, 2020 5:19:16 PM > To: Aditya K > Cc: Jan Hubicka ; gcc@gcc.gnu.org > Subject: Re: Fw: GSoC topic: Implement hot cold s

Re: Fw: GSoC topic: Implement hot cold splitting at GIMPLE IR level

2020-03-17 Thread Aditya K via Gcc
reuse them. -Aditya From: Jakub Jelinek Sent: Monday, March 16, 2020 5:19:16 PM To: Aditya K Cc: Jan Hubicka ; gcc@gcc.gnu.org Subject: Re: Fw: GSoC topic: Implement hot cold splitting at GIMPLE IR level On Mon, Mar 16, 2020 at 11:11:14PM +, Aditya K via Gcc

Re: Fw: GSoC topic: Implement hot cold splitting at GIMPLE IR level

2020-03-16 Thread Jakub Jelinek via Gcc
On Mon, Mar 16, 2020 at 11:11:14PM +, Aditya K via Gcc wrote: > > > > 2) ipa-split is very simplistic and only splits when there is no value > >computed in header of function used in the tail. We should support > > adding extra parameters for values computed and do more general SESE > >

Re: Fw: GSoC topic: Implement hot cold splitting at GIMPLE IR level

2020-03-16 Thread Aditya K via Gcc
> > 2) ipa-split is very simplistic and only splits when there is no value >computed in header of function used in the tail. We should support > adding extra parameters for values computed and do more general SESE >outlining > Note that we do SESE outlining for openMP but this code is

Re: Fw: GSoC topic: Implement hot cold splitting at GIMPLE IR level

2020-03-05 Thread Segher Boessenkool
Hi! On Tue, Mar 03, 2020 at 10:25:32PM +0100, Jan Hubicka wrote: > I think this is bit stronger to what llvm does currently which relies on > outlining SESE regions earlier rather than going through the pain of > implementing support for partitioning. OTOH outlining can result in improved code,

Re: Fw: GSoC topic: Implement hot cold splitting at GIMPLE IR level

2020-03-03 Thread Jan Hubicka
Aditya, the hot/cold partitioning is currently organized as folows: 1) we have static branch prediction code in predict.c and profile feedback which we store into cfg and callgraph. 2) we have predicates optimize_*_for_speed_p/size_p where * can be function, basic block, cfg edge, callg