This patch adds functionality to emit relevant libcalls in case atomicrmw instruction can not be emitted (for instance, in case of complex types). The IRBuilder is modified to directly emit __atomic_load and __atomic_compare_exchange libcalls. The added functions follow a similar codegen path as Clang, so that LLVM Flang generates almost similar IR as Clang. Fixes https://github.com/llvm/llvm-project/issues/83760 and https://github.com/llvm/llvm-project/issues/75138 Co-authored-by: Michael Kruse <llvm-project@meinersbur.de>
648 B
648 B