On Wed, Jul 30, 2025 at 06:24:42PM +0800, Yang Yujie wrote:
> On Wed, Jul 30, 2025 at 12:19:24PM GMT, Jakub Jelinek wrote:
> > On Wed, Jul 30, 2025 at 06:15:56PM +0800, Yang Yujie wrote:
> > > So wouldn't it be simpler if I just change the comparison in my patch into
> > > a memcmp?  This works regardless of how comparison is implemented.
> > > (We all assume that expression (x) may have its address taken.)
> > 
> > No.  memcmp after memcpy will be always identical.
> > By treating the memcpy copied data as the promoted _BitInt (without knowing
> > anything about it) and shifting right by S (x) for unsigned it needs to do
> > the shift and the result will be 0 if correct and non-zero on error,
> > similarly for signed shifting right by S (x) - 1 the result will be 0 or -1
> > if correct and otherwise erroneous.
> > 
> >     Jakub
> 
> I mean do the casting first:
> 
> typeof(x) __y = (typeof(x)) __x;
> 
> and then compare the objects of __y and (x) with memcmp.

You don't want to do memcmp when it includes uninitialized bits (which is
the case on loongarch).  I really prefer the shift.

        Jakub

Reply via email to