https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103830
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- A fix in the source would be: void MyClass::call() { volatile char * volatile null = nullptr; *null = 1; /* line 26 */ } which then compiles to movq $0, -8(%rsp) movq -8(%rsp), %rax movb $1, (%rax) ret (some "advanced" means using some asm() to hide the constant from the compiler might also work)