Go to file
Manman Ren 7e48b252e7 ARM: tail-call inside a function where part of a byval argument is on caller's
local frame causes problem.

For example:
void f(StructToPass s) {
  g(&s, sizeof(s));
}
will cause problem with tail-call since part of s is passed via registers and
saved in f's local frame. When g tries to access s, part of s may be corrupted
since f's local frame is popped out before the tail-call.

The current fix is to disable tail-call if getVarArgsRegSaveSize is not 0 for
the caller. This is a conservative approach, if we can prove the address of
s or part of s is not taken and passed to g, it should be okay to perform
tail-call.

rdar://12442472

llvm-svn: 165853
2012-10-12 23:39:43 +00:00
clang [ms-inline asm] Remove a bunch of parsing code from the front-end. 2012-10-12 23:32:10 +00:00
clang-tools-extra Remove a trailing blank line, test commit. 2012-10-10 14:06:15 +00:00
compiler-rt -fcatch-undefined-behavior: Runtime library support for trapping conversions to or 2012-10-12 22:57:15 +00:00
debuginfo-tests Fix this for gdb 7.4. 2012-07-23 19:41:58 +00:00
libclc Implement any() builtin. Patch by Tom Stellard! 2012-10-08 03:39:21 +00:00
libcxx Holger Arnold: Correct the use and testing of __GNUC__ and __GNUC_MINOR__ in <__config>. 2012-10-03 20:48:05 +00:00
libcxxabi Move TargetData to DataLayout. 2012-10-08 16:29:26 +00:00
lld * Add relocation reference support for Hexagon and PowerPC. 2012-10-09 02:20:47 +00:00
lldb <rdar://problem/12490558> 2012-10-12 23:32:11 +00:00
llvm ARM: tail-call inside a function where part of a byval argument is on caller's 2012-10-12 23:39:43 +00:00
polly www: Clarify that GMP is LGPL licensed 2012-10-12 07:44:38 +00:00