Dear Pavel Machek,

> Hi!
> 
>     In message <20121105200340.GA15821@xo-6d-61-c0.localdomain> you wrote:
> >    > > > >         /* Append length in bits and transform */
> >    > > > > 
> >    > > > > -       ctx->in32[14] = ctx->bits[0];
> >    > > > > -       ctx->in32[15] = ctx->bits[1];
> >    > > > > +       memcpy(ctx->in + 14 * sizeof(__u32), ctx->bits, 2 *
> >    
> >    sizeof(__u32));
> >    
> >    > > > This makes the code actually unreadable.  Please add at least a
> >    > > > comment what this is doing.
> >    > > 
> >    > > Actually I think this shoul dbe split into two memcpy commands,
> >    
> >    using
> >    
> >    > > the addresses of the respective array elements directly, without
> >    
> >    such
> >    
> >    > > manual pointer arithmetics.
> >    > 
> >    > I guess bigger question is: why does gcc miscompile that, and is it
> >    > guaranteed that it will not miscompile the memcpy?
> >    > 
> >      I did not see Simon mentioning anythin about incorrect compilation.
> >      My understanding was that it's just the usual "dereferencing
> >      type-punned pointer" warnings issue.
> 
> Is there some alternate solution? The memcpy is really ugly...
> 
> Plus... does it solve the issue? The code does not look like being
> compatible with strict pointer aliasing... and I don't think memcpy()
> helps.
> 
> arch/nds32/config.mk:PLATFORM_RELFLAGS  += -fno-strict-aliasing
> -fno-common -mrelax
> arch/x86/config.mk:PLATFORM_CPPFLAGS += -fno-strict-aliasing
> 
> We should really do that globally.
>                                                               Pavel

Were you even able to replicate this problem in the first place? Isn't this 
whole "problem" a problem of a broken (ubuntu/linaro) toolchain again?

Best regards,
Marek Vasut
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to