This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH COMMITTED: Fix PR 46084: Allow for alignment with split stack


Richard Henderson <rth@redhat.com> writes:

> On 11/05/2010 04:48 PM, Ian Lance Taylor wrote:
>> +      /* 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);
>
> We do have MALLOC_ABI_ALIGNMENT.

Oh yeah, thanks.

Testing this patch.

Ian

Index: explow.c
===================================================================
--- explow.c	(revision 166383)
+++ explow.c	(working copy)
@@ -1356,13 +1356,18 @@ allocate_dynamic_stack_space (rtx size, 
 #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");
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]