On Mon, Aug 15, 2011 at 2:16 PM, 王亮 <netcas...@gmail.com> wrote:
> Hi,
>
> Current implementation of ggc_alloc_rtvec_sized is
>
> #define ggc_alloc_rtvec_sized(NELT)                                     \
>    (ggc_alloc_zone_vec_rtvec_def (sizeof (rtx),                        \
>                                   sizeof (struct rtvec_def) + ((NELT) - 1), \
>                                   &rtl_zone))
>
> The size it allocates is
>
>  (sizeof (struct rtvec_def) + ((NELT) - 1)) * sizeof (rtx)

This looks indeed bogus.

>     // (1)
>
> Originally, the allocated size is
>
>  sizeof (struct rtvec_def) + ((NELT) - 1) * sizeof (rtx)
>    // (2)

This one is correct.

Laurynas?

> So current implementation allocates more spaces than before.
>
> I replace the second parameter of ggc_alloc_zone_vec_rtvec_def with
>
>  (sizeof (struct rtvec_def) + sizeof (rtx) - 1) / sizeof (rtx) +
> ((NELT) - 1)   // (3)
>
> It bootstraps on x86 successfully.  So I guess the extra spaces are
> not used.  Did I miss something?
>
> Thanks,
> Liang.
>

Reply via email to