-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Add support for no_split_stack attribute to LLVM. Use it on main #1226
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Comments
C shim functions run on the C stack so they need to not have the prologue either |
Ditto for crust functions. |
There was some noise on llvm-dev about this recently but I didn't notice if anything became of it. |
After the changed C stack switching design, it will be essential that C shims have the prologue. Same for crust functions. My changes to i386 __morestack make the "ugly check" less ugly, but the check could still stand to go away entirely. |
C stack switching was dropped; nothing was done about the ugly check. |
Triage bump; still relevant, esp with recent split-stack discussions. |
This is required for the new scheduler in order to implement split stacks. |
* This has one workaround patch (everything's testing just fine...) * I reworked the fixedstacksegment attribute to be specified with a string rather than using a keyword and an integer and modifying the parser * I added a "no-split-stack" attribute along the same lines as the "fixedstacksegment" attribute for rust-lang#1226
The first commit message is pretty good, but whomever reviews this should probably also at least glance at the changes I made in LLVM. I basically reorganized our pending patch queue to be a bit more organized and clearer in what needs to go where. After this, our queue would be: * Add the `no-split-stack` attribute * Add the `fixedstacksegment` attribute * Add split-stacks for arm android * Add split-stacks for arm linux * Add split stacks for mips Then there's a patch which I added to get rust to build at all on LLVM-head, and I'm not quite sure why it's there, but nothing seems to be crashing for now! (famous last words). Otherwise, I just updated code to reflect the changes I made in LLVM with the only major change being the advent of the new `no_split_stack` attribute. This is work towards #1226, but someone more familiar with the code should probably actually assign the attribute to the appropriate functions. Also as a bonus, I've verified that this closes #5774
This attribute has now been implemented in LLVM, and it's available for use via the |
Done, closing |
rust-lang#80522 split the `rustc_mir` crates into 5 crates, effectively invalidating all the direct links to `rustc_mir` in the docs. I found this while looking at the Two Phase Borrows doc, which is why I am giving out this PR to fix this.
rust-lang#80522 split the `rustc_mir` crates into 5 crates, effectively invalidating all the direct links to `rustc_mir` in the docs. I found this while looking at the Two Phase Borrows doc, which is why I am giving out this PR to fix this.
Currently our __morestack method has to do an ugly check to detect whether it is being called from main. gcc supports a no_split_stack attribute that can be used to suppress the split-stack prologue. We should add it to LLVM and use it.
The text was updated successfully, but these errors were encountered: