diff options
author | Matthias Braun <matze@braunis.de> | 2018-01-19 02:45:38 +0000 |
---|---|---|
committer | Matthias Braun <matze@braunis.de> | 2018-01-19 02:45:38 +0000 |
commit | dc4b3e87f466982fe7f8a5a9a5b154c7f2b0a4a6 (patch) | |
tree | c15a18b3c58f79fac5ea3693721be56aa1aa3879 /lldb/packages/Python/lldbsuite/test/expression_command/call-function/TestCallUserDefinedFunction.py | |
parent | 34230844edaa2b64a6089b222c8de6183811f8bd (diff) | |
download | bcm5719-llvm-dc4b3e87f466982fe7f8a5a9a5b154c7f2b0a4a6.tar.gz bcm5719-llvm-dc4b3e87f466982fe7f8a5a9a5b154c7f2b0a4a6.zip |
AArch64: Omit callframe setup/destroy when not necessary
Do not create CALLSEQ_START/CALLSEQ_END when there is no callframe to
setup and the callframe size is 0.
- Fixes an invalid callframe nesting for byval arguments, which would
look like this before this patch (as in `big-byval.ll`):
...
ADJCALLSTACKDOWN 32768, 0, ... # Setup for extfunc
...
ADJCALLSTACKDOWN 0, 0, ... # setup for memcpy
...
BL &memcpy ...
ADJCALLSTACKUP 0, 0, ... # destroy for memcpy
...
BL &extfunc
ADJCALLSTACKUP 32768, 0, ... # destroy for extfunc
- Saves us two instructions in the common case of zero-sized stackframes.
- Remove an unnecessary scheduling barrier (hence the small unittest
changes).
Differential Revision: https://reviews.llvm.org/D42006
llvm-svn: 322917
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/expression_command/call-function/TestCallUserDefinedFunction.py')
0 files changed, 0 insertions, 0 deletions