This feature requires support of __opencl_c_generic_address_space,
so diagnostics for that is provided as well.
The main problem with device enqueue feature is that block literal for block
with no captures emitted in global address space. This is not correct if feature
for program scope global variables are not supported. This patch:
- Disables generation of blocks in constant address space (temporally) if feature for program scope global variables is not supported, since such blocks always have no captures. Global blocks are not allowed in any other address space then constant if feature for program scope global variables is not supported.
- For local blocks without captures generate block literal in local scope with use of generic address space. This is achieved with checks during code generation and not treating block literals with no captures as constant expressions.
What test case covers this change? It feels like something we should try to diagnose earlier...