-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Load from GC frame preventing vectorization #13301
Comments
Conceivably we could bracket stores to the GC frame in |
Will that work if we have multiple stores to it? (Allocation in a loop or reuse of slots) |
I think so. The idea is to tell LLVM that the GC frame stops being invariant before a store and starts being invariant again afterwards. Might still be useful sometimes to have TBAA for the store so that LLVM knows it doesn't alias other loads. But as I noted in #8867 (comment) it's not clear if LLVM can actually make use of this metadata... |
I see vector instructions in this example now. Fixed? |
The following code (
T = Float32
) fails to vectorize on the current master (but vectorizes on 0.4-release)The function vectorize successfully if the allocation of the array is moved out of the function.
According to
code_llvm_raw
. There is a load in the loop that doesn't have a tbaa node attached.AFAICT, that line is the load of the array from the GC frame. So,
@vtjnash @simonster
The text was updated successfully, but these errors were encountered: