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 <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)