This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR78306
On Tue, 29 Nov 2016, Jeff Law wrote:
> On 11/29/2016 12:47 AM, Richard Biener wrote:
> > > Balaji added this check explicitly. There should be tests in the testsuite
> > > (spawnee_inline, spawner_inline) which exercise that code.
> >
> > Yes he did, but no, nothing in the testsuite.
> I believe the tests are:
>
> c-c++-common/cilk-plus/CK/spawnee_inline.c
> c-c++-common/cilk-plus/CK/spawner_inline.c
>
> But as I mentioned, they don't check for proper behaviour
Actually they do -- and both show what the issue might be, cilk+
uses setjmp but we already have code to disallow inlining of
functions calling setjmp (but we happily inline into functions
calling setjmp). When mangling the testcases to try forcing
inlining I still (the patch was already applied) get
/space/rguenther/src/gcc-git/gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c:
In function ‘fib’:
/space/rguenther/src/gcc-git/gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c:9:50:
error: function ‘fib’ can never be copied because it receives a non-local
goto
so the intent was probably to disallow inlining of functions calling
cilk_spawn, not to disable inlining into functions calling cilk_spawn.
But as seen above this is already handled by generic code handling
setjmp.
>
> >
> > There is _nowhere_ documented _why_ the checks were added. Why is
> > inlining a transform that can do anything bad to a function using
> > cilk_spawn?
> I know, it's disappointing. Even the tests mentioned above don't shed any
> real light on the issue.
One issue is obvious (but already handled). Why all inlining should
be disabled is indeed still a mystery.
Richard.
>
> Jeff
>
>
--
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)