#include struct { unsigned char flag; unsigned char val; } l; int main(int argc, char **argv) { int i; for (i = 0; i < 100000000; i++) { l.val += 2; asm volatile("mfence" : : : "memory"); if (l.flag) break; asm volatile("" : : : "memory"); } return 0; }