diff options
author | Ian Lance Taylor <iant@google.com> | 2010-11-06 03:44:58 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2010-11-06 03:44:58 +0000 |
commit | c070a3b932135776ba379c9fb00678b0c18def31 (patch) | |
tree | 82e55b0dd3dc5f943dfbdb761128bc2192d48909 /gcc/explow.c | |
parent | cde99631613bb609d8880e98ebac2057b10c09b6 (diff) | |
download | gcc-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.c | 19 |
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"); |