Mark Seaborn
09d1d540c8
Use 16 byte stack alignment for NaCl on ARM
...
NaCl's ARM ABI uses 16 byte stack alignment, so set that in
ARMSubtarget.cpp.
Using 16 byte alignment exposes an issue in code generation in which a
varargs function leaves a 4 byte gap between the values of r1-r3 saved
to the stack and the following arguments that were passed on the
stack. (Previously, this code only needed to support 4 byte and 8
byte alignment.)
With this issue, llc generated:
varargs_func:
sub sp, sp, #16
push {lr}
sub sp, sp, #12
add r0, sp, #16 // Should be 20
stm r0, {r1, r2, r3}
ldr r0, .LCPI0_0 // Address of va_list
add r1, sp, #16
str r1, [r0]
bl external_func
Fix the bug by checking for "Align > 4". Also simplify the code by
using OffsetToAlignment(), and update comments.
Differential Revision: http://llvm-reviews.chandlerc.com/D2677
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201497 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-16 18:59:48 +00:00
..
2014-02-13 14:44:26 +00:00
2013-11-22 21:49:45 +00:00
2014-02-04 01:23:52 +00:00
2014-02-04 01:23:52 +00:00
2013-10-14 16:57:17 +00:00
2014-02-04 01:23:52 +00:00
2013-10-14 16:57:17 +00:00
2014-02-16 07:31:05 +00:00
2013-12-18 09:58:06 +00:00
2013-10-14 16:57:17 +00:00
2013-10-11 18:09:19 +00:00
2013-10-11 18:09:19 +00:00
2014-01-23 19:55:33 +00:00
2013-10-14 16:57:17 +00:00
2013-11-14 17:15:39 +00:00
2014-01-15 01:32:12 +00:00
2014-02-07 11:19:53 +00:00
2013-12-03 11:23:11 +00:00
2013-11-14 13:58:06 +00:00
2014-01-02 13:40:08 +00:00
2013-12-13 11:16:00 +00:00
2014-02-13 14:44:26 +00:00
2014-01-29 11:50:56 +00:00
2014-01-11 21:06:00 +00:00
2013-10-25 09:30:24 +00:00
2014-01-07 02:28:42 +00:00
2014-02-16 07:31:05 +00:00
2013-10-07 19:47:53 +00:00
2014-02-04 01:23:52 +00:00
2014-02-16 07:31:05 +00:00
2014-02-13 14:44:26 +00:00
2014-01-06 14:28:05 +00:00
2013-10-24 23:11:05 +00:00
2014-02-16 07:31:05 +00:00
2014-02-14 17:19:07 +00:00
2014-02-14 17:19:07 +00:00
2014-02-14 17:19:07 +00:00
2013-11-22 21:49:45 +00:00
2013-11-22 21:49:45 +00:00
2013-11-23 01:16:29 +00:00
2013-11-22 21:49:45 +00:00
2013-11-22 21:49:45 +00:00
2013-11-22 21:49:45 +00:00
2014-02-14 17:19:07 +00:00
2013-12-18 09:27:33 +00:00
2014-01-11 21:06:00 +00:00
2013-10-07 18:06:48 +00:00
2014-01-29 11:50:56 +00:00
2014-01-29 11:50:56 +00:00
2014-01-29 11:50:56 +00:00
2014-01-30 14:18:25 +00:00
2013-12-29 23:09:14 +00:00
2014-01-06 14:28:05 +00:00
2014-01-06 14:28:05 +00:00
2013-12-29 23:09:14 +00:00
2013-12-11 16:04:57 +00:00
2014-02-11 23:49:31 +00:00
2013-11-15 19:09:27 +00:00
2014-02-04 10:38:46 +00:00
2014-01-14 22:53:28 +00:00
2014-02-16 13:28:39 +00:00
2013-12-18 09:58:06 +00:00
2013-12-18 09:58:06 +00:00
2013-10-11 19:04:37 +00:00
2013-10-04 16:52:54 +00:00
2014-02-07 00:38:56 +00:00
2014-01-29 23:18:47 +00:00
2014-02-14 17:19:07 +00:00
2014-02-14 17:19:07 +00:00
2014-02-13 14:44:26 +00:00
2014-02-13 14:44:26 +00:00
2014-02-13 14:44:26 +00:00
2014-02-04 17:22:40 +00:00
2014-01-24 15:59:50 +00:00
2014-01-24 15:59:50 +00:00
2014-01-24 15:59:50 +00:00
2014-02-14 17:19:07 +00:00
2014-02-03 17:27:49 +00:00
2013-10-01 12:39:11 +00:00
2014-01-06 14:28:05 +00:00
2014-02-16 13:28:15 +00:00
2013-10-11 18:09:19 +00:00
2013-10-11 18:09:19 +00:00
2014-01-14 13:05:47 +00:00
2014-01-31 00:42:44 +00:00
2013-12-02 10:35:41 +00:00
2014-02-13 16:49:47 +00:00
2014-01-25 02:02:55 +00:00
2014-01-06 14:28:05 +00:00
2014-01-23 13:43:47 +00:00
2013-12-02 14:46:26 +00:00
2013-09-30 18:17:35 +00:00
2013-11-26 12:45:05 +00:00
2013-12-13 11:16:00 +00:00
2014-02-13 14:44:26 +00:00
2013-12-18 09:58:06 +00:00
2013-12-18 09:58:06 +00:00
2013-10-11 11:07:00 +00:00
2014-01-06 14:28:05 +00:00
2013-11-08 18:14:17 +00:00
2013-10-04 16:52:56 +00:00
2014-01-27 21:39:04 +00:00
2014-02-10 14:04:07 +00:00
2013-12-28 21:57:05 +00:00
2013-12-13 11:16:00 +00:00
2013-10-04 16:52:51 +00:00
2013-10-11 18:09:19 +00:00
2014-02-07 20:32:32 +00:00
2013-11-03 06:14:38 +00:00
2014-02-01 01:36:16 +00:00
2014-01-24 17:20:08 +00:00
2013-10-15 19:42:32 +00:00
2013-09-30 18:17:35 +00:00
2013-12-06 17:56:48 +00:00
2014-02-13 14:44:26 +00:00
2013-12-13 11:16:00 +00:00
2014-02-12 18:09:18 +00:00
2013-12-13 11:16:00 +00:00
2014-01-13 14:20:25 +00:00
2013-12-04 22:43:20 +00:00
2013-12-04 22:43:20 +00:00
2013-12-04 22:43:20 +00:00
2013-10-11 18:09:19 +00:00
2014-02-13 10:44:30 +00:00
2014-02-16 18:59:48 +00:00
2014-02-04 14:55:42 +00:00
2014-02-04 14:55:42 +00:00
2013-12-18 09:58:06 +00:00
2014-01-20 17:14:48 +00:00
2013-10-11 18:09:19 +00:00
2013-12-18 09:58:06 +00:00
2014-01-16 09:16:13 +00:00
2014-01-16 09:16:13 +00:00
2013-12-18 09:58:06 +00:00
2013-12-18 09:58:06 +00:00
2013-10-10 09:28:20 +00:00
2013-12-18 22:25:17 +00:00
2014-02-10 16:20:29 +00:00
2014-02-10 14:04:07 +00:00
2014-01-16 09:16:13 +00:00
2014-01-16 09:16:13 +00:00
2013-10-11 18:09:19 +00:00
2013-12-17 17:47:22 +00:00