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

In function ‘fib’:
error: function ‘fib’ can never be copied because it receives a non-local 

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

> > 
> > 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.


> Jeff

Richard Biener <rguent...@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 
21284 (AG Nuernberg)

Reply via email to