From c070a3b932135776ba379c9fb00678b0c18def31 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sat, 6 Nov 2010 03:44:58 +0000 Subject: [PATCH] explow.c (allocate_dynamic_stack_space): Check MALLOC_ABI_ALIGNMENT. * explow.c (allocate_dynamic_stack_space): Check MALLOC_ABI_ALIGNMENT. From-SVN: r166393 --- gcc/ChangeLog | 5 +++++ gcc/explow.c | 19 ++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1e55c84..75d23de 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-11-05 Ian Lance Taylor + + * explow.c (allocate_dynamic_stack_space): Check + MALLOC_ABI_ALIGNMENT. + 2010-11-05 Jakub Jelinek PR c/44772 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"); -- 2.7.4