Go to file
Stepan Dyatkovskiy d0e34a200f 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.

llvm-svn: 182237
2013-05-20 08:01:34 +00:00
clang Revert "Revert "Debug Info: Using declarations/DW_TAG_imported_declaration of variables, types, and functions."" 2013-05-20 04:58:53 +00:00
clang-tools-extra Unbreak the build. 2013-05-17 16:26:21 +00:00
compiler-rt [sanitizer] factor out ByteMap from SizeClassAllocator32 so that it can be later replaced with a more memory-efficient implementation on 64-bit. 2013-05-20 07:29:21 +00:00
debuginfo-tests Remove IR scenario tests. 2013-03-15 20:52:10 +00:00
libclc Update the copyright coredits -- Happy new year 2013! 2013-01-01 10:00:19 +00:00
libcxx Add NetBSD support. 2013-05-17 21:17:34 +00:00
libcxxabi Add capability to demangle invocation functions for ObjC blocks. 2013-04-10 19:44:03 +00:00
lld [lld][ELF][x86_64,hexagon] Changed dynamic atoms to live in anonymous namespace 2013-05-20 03:57:01 +00:00
lldb Fixed a problem where the dynamic checkers (i.e., 2013-05-18 00:38:20 +00:00
llvm PR15868 fix. 2013-05-20 08:01:34 +00:00
polly rename make check target to match the naming convention followed in the other llvm projects 2013-05-17 23:04:28 +00:00