https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117030
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I think stdc_memreverse8 is implementable purely on the library side, perhaps with an inline version optimizing the common cases using switch with __builtin_bswap{16,32,64}. stdc_memreverse8uN with those builtins (or just return value for 8). Endian-aware loads/stores with __BYTE_ORDER__ dependent __builtin_bswap{16,32,64} or not, perhaps on memcpy out of the memory into a local. stdc_rotate_left_ui etc. can be handled inline using what we pattern recognize as rotations - (X << Y) | (X >> ((-Y) & (B - 1))) and the like. For stdc_rotate_{left,right} I guess we want __builtin_stdc_rotate_{left,right} for the same reason we've added the other __builtin_stdc_* builtins, so that it can be done without statement expressions and doesn't evaluate arguments multiple times and doesn't expand them multiple times and can handle arbitrary unsigned _BitInt. I'll add these two.