https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92821
--- Comment #3 from Emilio Cobos Álvarez (:emilio) <emilio at crisal dot io> --- If my reading of https://godbolt.org/z/BNHxEY is correct (sorry, still a bit of a noob with disassembly), it looks like GCC does correctly load only the low byte in the equivalent implementation of the Rust function, but clang does assume zero-extension to 32 bit... :/