Pipes in nested loop(device_enqueue)

Hi,
Im tring to implement BFS in OpenCL. As pipe and device_enqueue are introducedin OpenCL2.0. Its both quit important in BFS. so here’s the issue i just encounted.

deviceEnqueueDummyKernel B( read_only pipe Z, write_only pipe W )
{
...
   enqueue_kernel(...^{Kernel A(Z, W);})
}

Kernel A( read_only pipe X, write_only pipe Y)
{
...
  void (^bfsDummy_device_enqueue_wrapper_blk)(void) = ^{deviceEnqueueDummyKernel(Y, X);};
  enqueue_kernel(...bfsDummy_device_enqueue_wrapper_blk)
}

When compiled on intel(CPU) platform. the compiler indicates:

" error: passing 'const write_only pipe uint' to parameter of incompatible type 'read_only pipe uint' "

When compiled on Qcom mobile(GPU) platform, no error at compiling but “Segmentation fault” when start running the kernel in the program caused by “null pointer dereference” when back traced as "/vendor/lib64/libCB.so (cl_a6x_update_kernel_arguments+1588)"

So this issue may be compiler related. (Clang / passing parameter in Blocks)?
Is there any workaround for it?