-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
Disable LLVM Global Isel #9401
Disable LLVM Global Isel #9401
Conversation
It's not enabled by default on x86, but on other targets it is. At least until https://reviews.llvm.org/D80898 is released, it doesn't like us generating a value of a zero sized type We may need to fix doing that, but until then this workarounds the issue. See crystal-lang#9297 (comment) for more background.
Oh yeah, fixes #8080 / worksaround (I didn't know we had an issue ticket for this). |
@jhass is it GlobalIsel used in x86_64? Do you know what are the zero sized values that are currently being generated? |
According to the hints I got in IRC it's not by default and barely implemented there. I don't know for certain why they are generated, but I suspect something around I found it through bugpoint, so it's a bit hard to correlate back to the original code. |
nil is such a type:
|
Yeah, I forgot, in the comment linked above I actually related it back to (an instance of) the original code. So it has to do with nil return type procs. |
Strange, for nil return type procs I would expect that to translate to Also, nothing prevents a user from creating an empty struct... |
Also LLVM acknowledged and fixed this as a bug, so while I got a few why the hell do you do this in response, it seems legit if we do the easy thing right now and apply this workaround. |
Ok, but what's the current implication of disabling it? Are we going to get less performance in some platforms or what? |
Maybe? But I think it's only slightly and a big point is also an architectural change within LLVM allowing them to do more or different things in the future. |
It's not enabled by default on x86, but on other targets it is. At least until https://reviews.llvm.org/D80898 is released, it doesn't like us generating a value of a zero sized type
We may need to fix doing that, but until then this workarounds the issue.
See #9297 (comment) for more background.