https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64704
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Most likely because icmp6Ptr is not aligned to 16 bits like you say it is by doing: register uint16 *ptr = (uint16 *)icmp6Ptr;
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64704
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Most likely because icmp6Ptr is not aligned to 16 bits like you say it is by doing: register uint16 *ptr = (uint16 *)icmp6Ptr;