https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96399
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- s390x defaults to -funsigned-char, while x86_64 defaults to -fsigned-char, so what you get is exactly what should happen. If you want portable code, you should use signed char or unsigned char and use char only if you don't care if it is signed or unsigned.