-
Notifications
You must be signed in to change notification settings - Fork 211
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
rust-lang/rust integration metabug #66
Comments
Note, now that rust-lang/rust#38482 is merged, i128 support is required as well. Just using the C implementation is not enough as the C implementation only is enabled and works on non windows 64 bit platforms (that was the reason the PR had to implement the intrinsics in Rust in the first place). See #133 that attempts to add support. Also note that during the making of that PR I not just had linker issues with calls to panic, it also complained about calls to eh_personality, which in some cases survives while panic does not. |
Added i128 support to the list. After #133 lands, we would still need the famility of floatundif intrinsics, I believe. Also added changing the ABI of (some?) intrinsics from C to aapcs on ARM. cc #116
And I believe this issue was fixed in rust-lang/rust proper? cc @alexcrichton |
With #133 merged, the following float functions are required to be ported:
They all need |
use AAPCS calling convention on all aeabi intrinsics also, on ARM, inline(always) the actual implementation of the intrinsics so we end with code like this: ``` 00000000 <__aeabi_dadd>: (implementation here) ``` instead of "trampolines" like this: ``` 00000000 <__aeabi_dadd>: (shuffle registers) (call __adddf3) 00000000 <__adddf3>: (implementation here) ``` closes #116 cc #66 r? @alexcrichton cc @mattico
use AAPCS calling convention on all aeabi intrinsics also, on ARM, inline(always) the actual implementation of the intrinsics so we end with code like this: ``` 00000000 <__aeabi_dadd>: (implementation here) ``` instead of "trampolines" like this: ``` 00000000 <__aeabi_dadd>: (shuffle registers) (call __adddf3) 00000000 <__adddf3>: (implementation here) ``` closes #116 cc #66 r? @alexcrichton cc @mattico
OK. I believe that all the required intrinsics to land this in rust-lang/rust have been implemented. All that's left is: (a) check that the compiler-rt submodule in this repo matches the revision being used in rust-lang/rust and then (b) fight with bors and land this in rust-lang/rust. Any volunteers? Here's what needs to be done for (b):
All in one PR. You should test locally as a sanity check and then we can feed it to bors. Here's an old attempt of mine: rust-lang/rust#37802. All the Makefile changes in that PR won't be necessary as the Makefiles have been removed. |
Not a volunteer, but as someone who had a good share of "fighting with bors", I wish anyone who mounts an attempt the best of luck. |
@est31 Hey, don't scare away the volunteers! |
Done now! |
cc @alexcrichton
The text was updated successfully, but these errors were encountered: