mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Implement inalloca codegen for x86 with the new inalloca design
Calls with inalloca are lowered by skipping all stores for arguments passed in memory and the initial stack adjustment to allocate argument memory. Now the frontend is responsible for the memory layout, and the backend doesn't have to do any work. As a result these changes are pretty minimal. Reviewers: echristo Differential Revision: http://llvm-reviews.chandlerc.com/D2637 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200596 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -792,7 +792,10 @@ Currently, only the following parameter attributes are defined:
|
||||
An argument allocation may be used by a call at most once because
|
||||
the call may deallocate it. The ``inalloca`` attribute cannot be
|
||||
used in conjunction with other attributes that affect argument
|
||||
storage, like ``inreg``, ``nest``, ``sret``, or ``byval``.
|
||||
storage, like ``inreg``, ``nest``, ``sret``, or ``byval``. The
|
||||
``inalloca`` attribute also disables LLVM's implicit lowering of
|
||||
large aggregate return values, which means that frontend authors
|
||||
must lower them with ``sret`` pointers.
|
||||
|
||||
When the call site is reached, the argument allocation must have
|
||||
been the most recent stack allocation that is still live, or the
|
||||
|
Reference in New Issue
Block a user