[PATCH, PR44503] Fixes "control flow in the middle of basic block" with -fprefetch-loop-arrays
Jan Hubicka
hubicka@ucw.cz
Wed Jun 16 17:04:00 GMT 2010
> -fprefetch-loop-arrays.
> >
> > The problem is that a non-local label (for setjmp) exists in the function. When we insert a _builtin_prefetch
> > call, this prefetch is considered potentially changing the control flow. We think this is, in general, a loop
> > construction problem. When the current function has non local labels, there are no natural loops in the
> > function.
>
> >I would rather say it is CFG problem - for known builtins, like
> >__bultiln_prefetch we certainly don't need to produce nonlocal goto edges.
>
> >In fact this might be perhaps bundled in my "leaf" attribute patch I proposed
> >some time ago.
>
> Hi, Honza:
>
> Would you please give a link to your leaf attribute patch ?
http://gcc.gnu.org/ml/gcc-patches/2010-06/msg01329.html
It allows to tag builtins to be "well behaved" that is not calling functions within current unit
and returning normally (or not at all). I think non-local goto can be defined as not normal that
would allow cfg builder to not make edges on any leaf functions.
External function calls can do nonlocal goto back only via callback as far as I know.
Honza
>
> Thanks,
>
> Changpeng
More information about the Gcc-patches
mailing list