aboutsummaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2010-11-06 03:44:58 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2010-11-06 03:44:58 +0000
commitc070a3b932135776ba379c9fb00678b0c18def31 (patch)
tree82e55b0dd3dc5f943dfbdb761128bc2192d48909 /gcc/explow.c
parentcde99631613bb609d8880e98ebac2057b10c09b6 (diff)
downloadgcc-c070a3b932135776ba379c9fb00678b0c18def31.zip
gcc-c070a3b932135776ba379c9fb00678b0c18def31.tar.gz
gcc-c070a3b932135776ba379c9fb00678b0c18def31.tar.bz2
explow.c (allocate_dynamic_stack_space): Check MALLOC_ABI_ALIGNMENT.
* explow.c (allocate_dynamic_stack_space): Check MALLOC_ABI_ALIGNMENT. From-SVN: r166393
Diffstat (limited to 'gcc/explow.c')
-rw-r--r--gcc/explow.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/gcc/explow.c b/gcc/explow.c
index 1d809bc..85e9344 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -1356,13 +1356,18 @@ allocate_dynamic_stack_space (rtx size, unsigned size_align,
#endif
/* The __morestack_allocate_stack_space function will allocate
- memory using malloc. We don't know that the alignment of the
- memory returned by malloc will meet REQUIRED_ALIGN. Increase
- SIZE to make sure we allocate enough space. */
- ask = expand_binop (Pmode, add_optab, size,
- GEN_INT (required_align / BITS_PER_UNIT - 1),
- NULL_RTX, 1, OPTAB_LIB_WIDEN);
- must_align = true;
+ memory using malloc. If the alignment of the memory returned
+ by malloc does not meet REQUIRED_ALIGN, we increase SIZE to
+ make sure we allocate enough space. */
+ if (MALLOC_ABI_ALIGNMENT >= required_align)
+ ask = size;
+ else
+ {
+ ask = expand_binop (Pmode, add_optab, size,
+ GEN_INT (required_align / BITS_PER_UNIT - 1),
+ NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ must_align = true;
+ }
func = init_one_libfunc ("__morestack_allocate_stack_space");