2014-09-03 23:12 GMT+04:00 Jeff Law <l...@redhat.com>: > On 08/18/14 09:55, Ilya Enkovich wrote: >> >> On 04 Jun 01:15, Jeff Law wrote: >>> >>> On 06/03/14 01:10, Ilya Enkovich wrote: >>>> >>>> Hi, >>>> >>>> This patch does not allow splitting in case bounds are returned until >>>> retutrned bounds are supported. It also propagates instrumentation marks >>>> for generated call and function. >>>> >>>> Bootstrapped and tested on linux-x86_64. >>>> >>>> Thanks, >>>> Ilya >>>> -- >>>> gcc/ >>>> >>>> 2014-06-03 Ilya Enkovich <ilya.enkov...@intel.com> >>>> >>>> * ipa-split.c: Include tree-chkp.h. >>>> (consider_split): Do not split when return bounds. >>>> (split_function): Propagate Pointer Bounds Checker >>>> instrumentation marks. >>> >>> It's a hack. There's no reason we can't support this. So I'll >>> approve on the condition that you do look at removing this >>> limitation in the future. >>> >>> jeff >>> >> >> I did some work for function splitting and now patch cover more cases. >> Now returned bounds are supported but it is not allowed to split producers >> of returned pointer and its bounds. Is it OK? >> >> Thanks, >> Ilya >> -- >> 2014-08-15 Ilya Enkovich <ilya.enkov...@intel.com> >> >> * ipa-split.c: Include tree-chkp.h. >> (find_retbnd): New. >> (consider_split): Do not split retbnd and retval >> producers. >> (split_function): Propagate Pointer Bounds Checker >> instrumentation marks and handle returned bounds. > > I don't think it's sufficient to just look at the SSA_NAME_DEFSTMT and > verify that it's not in the header. > > You could easily have the SSA_NAME_DEF_STMT be a PHI which is in the same > partition as the RETURN statement. One of the PHI arguments might be fed > from a statement in the header, right? > > Don't you have to look at the entire set of definitions which directly and > indirectly feed the return statement and verify that each and every one is > in the same partition as the return statement?
A problem I'm trying to avoid is that bounds in return statement are not taken into account when checking for data dependencies between parts. It means we may have a case when return statement with bounds is put into split part but bounds producer is not. If SSA_NAME_DEFSTMT for returned bounds is in the same partition as a return then I do not think I should care about the rest of definitions chain because regular split point checks should make sure we have everything required. > > And if so, that makes me start to think the original hack wasn't so bad > after all :-) It's always nice to have a backup plan! :) Ilya > > jeff >