https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115991
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- It is ok on aarch64: ivtmp.16_6 = (unsigned long) &hdr; I didn't look into why x86 choices unsigned int and why aarch64 choises unsigned long though.