This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: attribute((leafify)) for 3.4


Hi!

I have some problems left in that inlining seems to cause new cgraph edges
be created but I miss to update some of them with maybe_inline_call even
though the patch chunk related to record_call_1().

adding a warning to cgraph_inline_p() to check if maybe_inline_call is
checked if leafify is on reveals non-marked edges coming from inlining of
something like

template<int Dim>
inline Interval<Dim>
cellDomainToCenteringDomain(const Interval<Dim> &cellDom,
                            const Centering<Dim> &centering, int i)
{
  return shrinkRight(growRight(cellDom, 1), centering.orientation(i));
}

where at inlining calls inside growRight() it moans it doesnt have seen
the edge to

template<int Dim>
inline Interval<Dim>
growRight(const Interval<Dim> &dom, int s)
{
  Interval<Dim> ret = Pooma::NoInit();
                      ^^^^^^^^^^^^^^^^  here
  for (int d = 0; d < Dim; ++d)
    {

so maybe the call to cgraph_create_edges in tree-inline.c:expand_call_inline() doesnt
create all neccessary edges? (but somehow they appear...)

Any idea? For reference, I put the patch with the warnings added at

http://www.tat.physik.uni-tuebingen.de/~rguenth/gcc/leafify-3.4-debug

and a preprocessed testcase at

http://www.tat.physik.uni-tuebingen.de/~rguenth/gcc/tramp3d2.ii.gz

Thanks,

Richard.

--
Richard Guenther <richard dot guenther at uni-tuebingen dot de>
WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]