On Thu, Jun 23, 2016 at 04:48:14PM +0100, Dominik Vogt wrote:
> Third version of the patch.  Changes:
> 
>  * Corrected a typo in a test case comment.
>  * Verify that stack variable alignment does not force the frame
>    pointer into existence (with -fomit-frame-pointer)
> 
> The test should hopefully run on all targets.  Tested on s390,
> s390x biarch, x86_64.  The only open question I'm aware of is the
> stack-usage-2.c test.  I guess foo3() will not generate
> 
>   stack usage might be ... bytes
> 
> On any target anymore, and using alloca() with a constant size
> results in "unbounded".  It's unclear to me whether that message
> is ever generated, and if so, how to trigger it.

> --- a/gcc/cfgexpand.c
> +++ b/gcc/cfgexpand.c
> @@ -1186,6 +1190,18 @@ expand_stack_vars (bool (*pred) (size_t), struct 
> stack_vars_data *data)
>         /* Large alignment is only processed in the last pass.  */
>         if (pred)
>           continue;
> +
> +       if (large_allocsize && ! large_allocation_done)
> +         {
> +           /* Allocate space the virtual stack vars area in the
> +              prologue.  */
> +           HOST_WIDE_INT loffset;
> +
> +           loffset = alloc_stack_frame_space (INTVAL (large_allocsize),
> +                                              PREFERRED_STACK_BOUNDARY);
                                                 ^^^^^^^^^^^^^^^^^^^^^^^^

Uh, this must be PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT.

Ciao

Dominik ^_^  ^_^

-- 

Dominik Vogt
IBM Germany

Reply via email to