https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108695

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |INVALID
             Status|WAITING                     |RESOLVED

--- Comment #10 from Martin Liška <marxin at gcc dot gnu.org> ---
> where the XOR16 is implemented as:
> 
> #define XORN(in1,in2,out,len) \
> do {                          \
>       uint _i;                \
>       for (_i = 0; _i < len/sizeof(ulong); ++_i)      \
>               *((ulong*)(out)+_i) = *((ulong*)(in1)+_i) ^ 
> *((ulong*)(in2)+_i);        \
> } while(0)

I can confirm that changing that to:

#define XORN(in1, in2, out, len)                  \
        do                                            \
        {                                             \
                uint _i;                                  \
                for (_i = 0; _i < len; ++_i)              \
                        *(out + _i) = *(in1 + _i) ^ *(in2 + _i); \
        } while (0)

fixes the problem. It seems very close to what I saw here:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83201#c13

Reply via email to