[patch] speed up ifcvt:cond_move_convert_if_block

Richard Guenther richard.guenther@gmail.com
Thu Aug 16 10:06:00 GMT 2012


On Thu, Aug 16, 2012 at 1:11 AM, Steven Bosscher <stevenb.gcc@gmail.com> wrote:
> On Mon, Aug 6, 2012 at 1:27 PM, Paolo Bonzini <bonzini@gnu.org> wrote:
>>> 2. sparseset has the same problem of memory clearing (for valgrind,
>>> see sparseset_alloc).
>>
>> ... only the sparse array needs this clearing, but currently we do it
>> for both.
>
> And according to the fat comment before the xcalloc, it's not even
> really needed. Why can't we just tell valgrind to treat the memory as
> defined, like in this patchlet:

Indeed ... I suppose ok if it bootstraps / tests w/o valgrind checking and
if a cc1 builds with valgrind checking.

Thanks,
Richard.

> Index: sparseset.c
> ===================================================================
> --- sparseset.c (revision 190418)
> +++ sparseset.c (working copy)
> @@ -30,12 +30,14 @@ sparseset_alloc (SPARSESET_ELT_TYPE n_elms)
>    unsigned int n_bytes = sizeof (struct sparseset_def)
>                          + ((n_elms - 1) * 2 * sizeof (SPARSESET_ELT_TYPE));
>
> -  /* We use xcalloc rather than xmalloc to silence some valgrind uninitialized
> +  sparseset set = XNEWVAR(sparseset, n_bytes);
> +
> +  /* Mark the sparseset as defined to silence some valgrind uninitialized
>       read errors when accessing set->sparse[n] when "n" is not, and never has
>       been, in the set.  These uninitialized reads are expected, by design and
> -     harmless.  If this turns into a performance problem due to some future
> -     additional users of sparseset, we can revisit this decision.  */
> -  sparseset set = (sparseset) xcalloc (1, n_bytes);
> +     harmless.  */
> +  VALGRIND_DISCARD (VALGRIND_MAKE_MEM_DEFINED (set, n_bytes));
> +
>    set->dense = &(set->elms[0]);
>    set->sparse = &(set->elms[n_elms]);
>    set->size = n_elms;
>
>
> I have never built GCC with valgrind checking, so I don't know if this
> is correct. But there has to be a better solution than calling
> xcalloc...
>
> Ciao!
> Steven



More information about the Gcc-patches mailing list