-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Slightly improve translation of function arguments #26738
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
Conversation
r? @pnkfelix (rust_highfive has picked a reviewer for you, use r? to override) |
The tupling only happens for actual closures, same for the untupling. The only code that actually sees the tupled types is some debugging output for which it is actually rather confusing to have the types tupled, because neither the function signature in Rust nor the function signature for LLVM has them tupled.
The current split between create_datums_for_fn_args, copy_args_to_allocas and store_arg involves a detour via rvalue datums which cause additional work in form of insertvalue/extractvalue pairs for fat pointer arguments, and an extra alloca and memcpy for tupled args in rust-call functions. By merging those three functions into just one that actually covers the whole process of creating the final argument datums, we can skip all that. Also, this allows to easily merge in the handling of rust-call functions, allowing to make create_datum_for_fn_args_under_call_abi obsolete. cc rust-lang#26600 -- The insertvalue instructions kicked us off of fast-isel.
@bors: r+ |
📌 Commit a04784f has been approved by |
The current split between create_datums_for_fn_args, copy_args_to_allocas and store_arg involves a detour via rvalue datums which cause additional work in form of insertvalue/extractvalue pairs for fat pointer arguments, and an extra alloca and memcpy for tupled args in rust-call functions. By merging those three functions into just one that actually covers the whole process of creating the final argument datums, we can skip all that. Also, this allows to easily merge in the handling of rust-call functions, allowing to make create_datum_for_fn_args_under_call_abi obsolete. cc #26600 -- The insertvalue instructions kicked us off of fast-isel.
💔 Test failed - auto-mac-32-opt |
@bors: retry On Thu, Jul 2, 2015 at 11:50 AM, bors [email protected] wrote:
|
The current split between create_datums_for_fn_args, copy_args_to_allocas and store_arg involves a detour via rvalue datums which cause additional work in form of insertvalue/extractvalue pairs for fat pointer arguments, and an extra alloca and memcpy for tupled args in rust-call functions. By merging those three functions into just one that actually covers the whole process of creating the final argument datums, we can skip all that. Also, this allows to easily merge in the handling of rust-call functions, allowing to make create_datum_for_fn_args_under_call_abi obsolete. cc #26600 -- The insertvalue instructions kicked us off of fast-isel.
The current split between create_datums_for_fn_args, copy_args_to_allocas and
store_arg involves a detour via rvalue datums which cause additional work in
form of insertvalue/extractvalue pairs for fat pointer arguments, and an extra
alloca and memcpy for tupled args in rust-call functions.
By merging those three functions into just one that actually covers the whole
process of creating the final argument datums, we can skip all that. Also,
this allows to easily merge in the handling of rust-call functions, allowing to
make create_datum_for_fn_args_under_call_abi obsolete.
cc #26600 -- The insertvalue instructions kicked us off of fast-isel.