Per Arm's blog post, there is now a feature -moutline-atomics in GCC10 (and, I think, Clang12) that implements out-of-line atomics - eg, certain atomic actions in armv8 (not armv8.1) compile to runtime calls that check whether the processor is new enough to use LSE atomics (or needs LL/SC). Ideally, c4t should be able to pass -moutline-atomics or -mno-outline-atomics when on armv8 and a sufficiently recent compiler version.
This might be a turning point to consider a more principled way of teaching c4t about perturbable compiler optimisations. I'll sketch a new issue for this.
Per Arm's blog post, there is now a feature
-moutline-atomics
in GCC10 (and, I think, Clang12) that implements out-of-line atomics - eg, certain atomic actions inarmv8
(notarmv8.1
) compile to runtime calls that check whether the processor is new enough to use LSE atomics (or needs LL/SC). Ideally, c4t should be able to pass-moutline-atomics
or-mno-outline-atomics
when onarmv8
and a sufficiently recent compiler version.This might be a turning point to consider a more principled way of teaching c4t about perturbable compiler optimisations. I'll sketch a new issue for this.