[libclc] Fix memory fence scope mapping for OpenCL #170542
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The function
__opencl_get_memory_scopeincorrectly assumed that theClang built-in
__MEMORY_SCOPE_*macros defined as bitmasks, while theyare actually defined as distinct integer values. This led to incorrect
mapping of OpenCL memory fence flags to LLVM memory scopes, causing
issues in generated code.
The fix involves updating the
__opencl_get_memory_scopefunction toreturn the correct
__MEMORY_SCOPE_*values based on the providedcl_mem_fence_flags. Additionally, the__opencl_get_memory_semanticsand the
__opencl_get_memory_scopefunctions are marked asstaticto avoid potential multiple definition issues during linking.