-
Notifications
You must be signed in to change notification settings - Fork 13.1k
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
Invoke instructions kick us off the FastISel path #3551
Comments
It is probably not very difficult to switch the landing pads to use the function return value. Initiating unwinding could be done with a tiny intrinsic. Since we would be returning through The trickiest part may be handling an out-of-stack failure but fortunately we seem to be doing it wrong now anyway (#3555). |
We are also getting kicked off the FastISel path for two other reasons: (a) intrinsic function calls that LLVM doesn't know about; (b) invalid types (first class aggregates?) Investigating. |
Oh, bah. It's the |
Slices treated as immediates ( |
I'm surprised that they are being treated as immediates. First place to look is |
non-critical for 0.6, de-milestoning |
Still true, still sad. Return-unwind fixes this. |
@pcwalton: it seems like the compiler doesn't generate |
This is still a problem but the number of landing pads has been greatly reduced. |
This is quite an old bug, and I believe that quite a bit of work has gone into improving this since it was opened. We still have invoke instructions, but they're necessary for the current unwinding strategy. Alterations to the unwinding strategy should now be discussed in the RFC repo rather than here, and other than that I believe this is not necessarily actionable any more, so closing. |
macos: use getentropy from libc This has been added in the mean time.
macos: use getentropy from libc This has been added in the mean time.
We are never on the fast instruction selection path in LLVM because we're using Invoke instructions everywhere. Thus we pay the cost of full optimized SelectionDAG invocation at all optimization levels in rustc.
The solution is to stop using C++ exceptions for unwinding.
The text was updated successfully, but these errors were encountered: