Fence placement for legacy data-race-free programs via synchronization read detection
Shared-memory programmers traditionally assumed Sequential Consistency (SC), butmodern systems have relaxedmemory consistency. Here, the trend in languages is towardData-Race-Free (DRF) models, where, assuming annotated synchronizations and the program being well-synchronized by those synchronizations, the hardware and compiler guarantee SC. However, legacy programs lack annotations, so even well-synchronized (legacy DRF) programs aren't recognized. For legacy DRF programs, we can significantly prune the set of memory orderings determined by automated fence placement by automatically identifying synchronization reads. We prove our rules for identifying them conservatively, implement them within LLVM, and observe a 30% average performance improvement over previous techniques.