https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114923
--- Comment #4 from Alexander Monakov <amonakov at gcc dot gnu.org> --- You can place points of possible access outside of abstract machine in a fine-grained manner with volatile asms: asm volatile("" : "=m"(buf)); This cannot be reordered against accesses to volatile variables and doesn't imply modification of anything except 'buf'.