Skip to content
  • Paul Osmialowski's avatar
    Use C++11 atomics for ticket locks implementation · f7cc6aff
    Paul Osmialowski authored
    This patch replaces use of compiler builtin atomics with
    C++11 atomics for ticket locks implementation. Ticket locks
    are used in critical places of the runtime, e.g. in the tasking
    mechanism.
    
    The main reason this change was introduced is the problem
    with work stealing function on ARM architecture which suffered
    from nasty race condition. It turned out that the root cause of
    the problem lies in the way ticket locks are implemented. Changing
    compiler builtins into C++11 atomics solves the problem.
    
    Two assertions were added into kmp_tasking.c which are useful
    for detecting early symptoms of something wrong going on with
    work stealing, which were among the possible outcomes of the
    race condition.
    
    Differential Revision: http://reviews.llvm.org/D19878
    
    llvm-svn: 271324
    f7cc6aff
Loading