https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120803
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Plus there is an easy workaround, just cast it to some wider type. For -O0 purposes, better as constexpr as well. So constexpr unsigned char value = 0x80; constexpr int value_promoted = var; asm("int %0" :: "i"(value_promoted)); in this case.