https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106692
--- Comment #13 from Tobias Burnus <burnus at gcc dot gnu.org> --- > What do others think? I am a bit unsure. Cray pointers are weird and it is not quite clear how they are used in real world code. Your modification causes a missed optimization for code like: var = NULL if (var == NULL) as the volatile not only prevents seeing this but also reloads the variable instead of using the value in the register. But as Cray pointers are weird, pointer checks are rare and volatile is localized, it might actually be okay?