llvm-6502/lib
Stepan Dyatkovskiy 083bc97344 PR15868 fix.
Introduction:
In case when stack alignment is 8 and GPRs parameter part size is not N*8:
we add padding to GPRs part, so part's last byte must be recovered at
address K*8-1.
We need to do it, since remained (stack) part of parameter starts from
address K*8, and we need to "attach" "GPRs head" without gaps to it:

Stack:
|---- 8 bytes block ----| |---- 8 bytes block ----| |---- 8 bytes...
[ [padding] [GPRs head] ] [ ------ Tail passed via stack  ------ ...

FIX:
Note, once we added padding we need to correct *all* Arg offsets that are going
after padded one. That's why we need this fix: Arg offsets were never corrected
before this patch. See new test-cases included in patch.

We also don't need to insert padding for byval parameters that are stored in GPRs
only. We need pad only last byval parameter and only in case it outsides GPRs
and stack alignment = 8.
Though, stack area, allocated for recovered byval params, must satisfy
"Size mod 8 = 0" restriction.

This patch reduces stack usage for some cases:
We can reduce ArgRegsSaveArea since inner N*4 bytes sized byval params my be
"packed" with alignment 4 in some cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182237 91177308-0d34-0410-b5e6-96231b3b80d8
2013-05-20 08:01:34 +00:00
..
Analysis isKnownToBeAPowerOfTwo: (X & Y) + Y is a power of 2 or zero if y is also. 2013-05-18 19:30:37 +00:00
Archive
AsmParser Add ArrayRef constructor from None, and do the cleanups that this constructor enables 2013-05-05 00:40:33 +00:00
Bitcode Micro-optimization: don't shift an entire bitcode record over to get the code. 2013-05-10 22:17:10 +00:00
CodeGen Add LLVMContext argument to getSetCCResultType 2013-05-18 00:21:46 +00:00
DebugInfo libDebugInfo depends on libObject nowadays. 2013-05-09 13:48:26 +00:00
ExecutionEngine AArch64: make RuntimeDyld relocations idempotent 2013-05-19 15:39:03 +00:00
IR Remove duplicated comment 2013-05-18 00:24:09 +00:00
IRReader
Linker Fix a performance bug in the Linker. 2013-05-04 05:05:18 +00:00
MC Cleanup relocation sorting for ELF. 2013-05-15 18:22:01 +00:00
Object Convert obj2yaml to use yamlio. 2013-05-17 22:58:42 +00:00
Option
Support Remove declaration of __clear_cache for __APPLE__. <rdar://problem/13924072> 2013-05-19 20:33:51 +00:00
TableGen
Target PR15868 fix. 2013-05-20 08:01:34 +00:00
Transforms LoopVectorize: Handle single edge PHIs 2013-05-18 18:38:34 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile