OpenCL v2.0 s6.12.5:
Block variable declarations are implicitly qualified with const.
Therefore all block variables must be initialized at declaration time and
may not be reassignedblock invoke function once is stored in block literal, it will not change.
As such,Therefore mark store and load of block invoke function can be marked as invariant. This is
This will facilitate lowering of indirect function calls resulted from it toto direct function
direct function callscalls, which is important for OpenCL since OpenCL does not require supporting of function