{"push_id":2333913514,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"8f335839945a303811ee3514202c94ecb78834da","before":"7e12c117dfcbd54c5184d60fa78dd6321affd641","commits":[{"sha":"8f335839945a303811ee3514202c94ecb78834da","author":{"name":"Yaxun Liu","email":"0d6cb2294a03e122fb273e29fa7ea8da12cf57e0@amd.com"},"message":"[OpenCL] Fix __enqueue_block for block with captures\n\nThe following test case causes issue with codegen of __enqueue_block\n\nvoid (^block)(void) = ^{ callee(id, out); };\n\nenqueue_kernel(queue, 0, ndrange, block);\nClang first does codegen for block expression in the first line and deletes its block info.\nClang then tries to do codegen for the same block expression again for the second line,\nand fails because the block info is gone.\n\nThe fix is to do normal codegen for both lines. Introduce an API to OpenCL runtime to\nrecord llvm block invoke function and llvm block literal emitted for each AST block\nexpression, and use the recorded information for generating the wrapper kernel.\n\nThe EmitBlockLiteral APIs are cleaned up to minimize changes to the normal codegen\nof blocks.\n\nAnother minor issue is that some clean up AST expression is generated for block\nwith captures, which can be stripped by IgnoreImplicit.\n\nDifferential Revision: https://reviews.llvm.org/D43240\n\n\ngit-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@325264 91177308-0d34-0410-b5e6-96231b3b80d8","distinct":true,"url":"https://api.github.com/repos/llvm-mirror/clang/commits/8f335839945a303811ee3514202c94ecb78834da"}]}
{"actor":{"display_login":"dtzWill"}}