[RISC-V] Make mem* functions always available #532
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.
Overview
[RISC-V] Make mem* functions always available
Reason for change
When we link in builtin functions, we attempted to detect when we need memcpy/memmove/memset to provide them when needed. This detection proved to not be entirely reliable: compiler passes run after linking in the builtin functions are permitted to insert additional references. When running SYCL-CTS, it turned out that function inlining can insert additional references to memcpy for the purpose of copying function arguments which, after inlining, no longer exist as separate function arguments.
Description of change
For non-RISC-V targets, we already unconditionally provide these functions in host::utils::getRelocations(), so it seems reasonable to just always provide them for RISC-V too.
Anything else we should know?
This also allows us to avoid some complexity in the definition of memmove that was only there to deal with the situation where memcpy might be unavailable. As that can no longer happen, that no longer needs to be taken into account.
Checklist