5c shouldn't discard the cast, which implies a mask, but you should also rewrite the code as you suggest. (it's not just 5c, since it's the same for several other RISCy ones.) On Thu, Jul 25, 2019 at 12:20 PM Steve Simon wrote: > Hi, > > I traced a long standing cifs issue to 5c the compiler. > > The code in lib9p to validate wstat calls > uses a neat bit of casting which fails when using 5c. > > /sys/src/lib9p/srv.c:658-669 > > These following lines missfire reporting type or qid change > when trying to rename files over cifs. > > if((ushort)~r->d.type){ > ... > if((uchar)~r->d.qid.type || .. ){ > > but rewriting them like this makes the code work as expected: > > if(r->d.type != (ushort)~0){ > ... > if(r->d.qid.type != (uchar)~0 || ... ) > > Personally I am happy to hack lib9p but the worry is that > this bug might be affecting other things. > > I have no knowledge of the internals of the compilers so > I am afraid I have made no attempt to dig deeper. > > -Steve > >