https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110754
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- For volatile I'm afraid we can't pass n as an argument to the magic function, perhaps we could pass its address to it and do the load in there. Perhaps ditto for the atomics (that is C only of course), but that likely is what happens already. Sure, most likely such assumptions won't be really useful for anything, but one could still say volatile int n = p; int m = 0; [[assume (p == (n & m))]]; if (p != 0) ... or similar.