https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80115
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |fche at redhat dot com, | |jakub at gcc dot gnu.org, | |rth at gcc dot gnu.org, | |uros at gcc dot gnu.org --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- That looks like a systemtap or OpenJDK bug to me. For bool and other 8-bit values, one can't use the "r" constraint on ia32, but has to use "q" constraint instead, because ia32 32-bit doesn't have %sil, %dil, %bpl and %spl registers. So, for #ifdef __i386__, either sdt.h needs to force the sub-int arguments into int (e.g. #define _SDT_ARGVAL(x) ((x) + 0) would do it I think), or # define STAP_SDT_ARG_CONSTRAINT noq instead of nor (again, ia32 only), or perhaps use the constraint conditional depending on sizeof (x). This "worked" in gcc 6 and earlier because we happily emitted %sil etc. into the inline assembly, even when it is not valid for 32-bit code, but starting with r245815 we diagnose that.