https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77729
Florian Weimer <fw at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |fw at gcc dot gnu.org --- Comment #7 from Florian Weimer <fw at gcc dot gnu.org> --- Something similar happens on x86_64 with -Os. The OR instruction operates on %eax instead of %al: 0000000000000000 <TrieCase3>: 0: 8a 07 mov (%rdi),%al 2: 83 c8 20 or $0x20,%eax 5: 3c 74 cmp $0x74,%al (Byte-wise OR would be 0x0c 0x20, one byte shorter.)