I have discovered this because i wanted to experiment with building static libomp
(with openmp-4.0 support only) for debugging purposes.
This is marked as RFC because i'm not sure if non-default values for
LIBOMP_OMP_VERSION are supposed to work or not.
There are three kinds of problems here:
- __kmp_compare_and_store_acq() simply does not exist. It was added in D47903 by @jlpeyton I'm guessing __kmp_atomic_compare_store_acq() was meant.
- In __kmp_is_ticket_lock_initialized(), lck->lk.initialized is std::atomic<bool>, while lck is kmp_ticket_lock_t *. Naturally, they can't be equality-compared. Either, it should return the value read from lck->lk.initialized, or do what __kmp_is_queuing_lock_initialized() does, compare the passed pointer with the field in the struct pointed by the pointer. I think the latter is correct-er choice here.
- Tests were not versioned. They assume that LIBOMP_OMP_VERSION is at the latest version.