On Tue, 28 Oct 2014, Jakub Jelinek wrote:

> On Tue, Oct 21, 2014 at 10:28:40AM +0100, Thomas Preud'homme wrote:
> > --- a/gcc/tree-ssa-math-opts.c
> > +++ b/gcc/tree-ssa-math-opts.c
> > @@ -1916,7 +1916,8 @@ find_bswap_or_nop_1 (gimple stmt, struct 
> > symbolic_number *n, int limit)
> >         if (!TYPE_UNSIGNED (n->type) && type_size > old_type_size
> >             && HEAD_MARKER (n->n, old_type_size))
> >           for (i = 0; i < type_size - old_type_size; i++)
> > -           n->n |= MARKER_BYTE_UNKNOWN << (type_size - 1 - i);
> > +           n->n |= MARKER_BYTE_UNKNOWN
> > +                   << ((type_size - 1 - i) * BITS_PER_MARKER);
> >  
> >         if (type_size < 64 / BITS_PER_MARKER)
> >           {
> 
> As my last bootstrap-ubsan bootstrap revealed, this is still wrong.
> Here is a fix (other spots where MARKER_BYTE_UNKNOWN is shifted up
> are correct).  Bootstrapped/regtested on i686-linux, ok for trunk?

Ok.

Thanks,
Richard.

> Thomas, you know the code better, can you from the fix figure out
> a testcase that current trunk miscompiles or doesn't optimize
> because of this bug?
> 
> 2014-10-28  Jakub Jelinek  <ja...@redhat.com>
> 
>       * tree-ssa-math-opts.c (find_bswap_or_nop_1): Use uint64_t
>       type for the left shift in CASE_CONVERT case.
> 
> --- gcc/tree-ssa-math-opts.c.jj       2014-10-27 19:41:14.000000000 +0100
> +++ gcc/tree-ssa-math-opts.c  2014-10-27 23:43:41.956495361 +0100
> @@ -1926,7 +1926,7 @@ find_bswap_or_nop_1 (gimple stmt, struct
>           if (!TYPE_UNSIGNED (n->type) && type_size > old_type_size
>               && HEAD_MARKER (n->n, old_type_size))
>             for (i = 0; i < type_size - old_type_size; i++)
> -             n->n |= MARKER_BYTE_UNKNOWN
> +             n->n |= (uint64_t) MARKER_BYTE_UNKNOWN
>                       << ((type_size - 1 - i) * BITS_PER_MARKER);
>  
>           if (type_size < 64 / BITS_PER_MARKER)
> 
> 
>       Jakub
> 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE / SUSE Labs
SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746
GF: Jeff Hawn, Jennifer Guild, Felix Imend"orffer

Reply via email to