bloomberg/bde

BDE Library built with GCC cannot be used with Clang

Opened this issue · 0 comments

GCC and Clang are supposedly binary compatible.

However, it seems that the BDE library introduces compiler-dependent types in its public interface, which breaks this compatibility.

Specifically, when building the BDE library with GCC and attempting to consume it using Clang, the following linker error occurs: undefined reference to 'BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits<BloombergLP::bsls::AtomicOperations_ALL_ALL_ClangIntrinsics>::Int*)'

The issue is mainly due to one line in bdlt_datetime.h because it uses BSLS_REVIEW_INVOKE in the header. Other usages can be turned off with BSLS_REVIEW_LEVEL_NONE.

Is there (still) a reason why there is a Clang specific BloombergLP::bsls::AtomicOperations_ALL_ALL_ClangIntrinsics traits class?
The structure of the ifdef-ery in bsls_atomicoperations.h looks like Clang also should work with the GCC intrinsics, but the path is not reachable with current Clang versions.