У вас где-то в другом месте проблема, а это не решение, а просто уход от неё.
Портабельного аналога в стандарте нет. А Clang понимает __attribute__((noinline)).
Но если у вас там действительно всякие нестандартные атомики, то:
1. используйте стандартные атомики;
2. используйте ordered атомики;
3. используйте барьеры (или для процессора, или только для компилятора asm volatile("":::"memory");
);
4. выясните, почему компилятор себе позволяет делать reordering вокруг ваших ассемблерных вставок или интринсиков. Баг компилятора?
А то потом придёт какой-нибудь link-time optimization и снова всё вам сломает.
И да, вы уверены что вы правильно написали свою критическую секцию? И зачем?