Many parallel programming models guarantee that if all sequentially
consistent (SC) executions of a program are free of data races, then all
executions of the program will appear to be sequentially consistent. This
greatly simplifies reasoning about the program, but leaves open the question of
how to verify that all SC executions are race-free. In this paper, we show that
with a few simple modifications, model checking can be an effective tool for
verifying race-freedom. We explore this technique on a suite of C programs
parallelized with OpenMP