Doesn't assembly allow devs to ignore speculative execution as well?
You can place LFENCE(x86)/CSDB(arm) around code blocks, but you can do that in C too.