diff options
author | Erik Schnetter <schnetter@gmail.com> | 2013-01-17 14:47:57 -0500 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2013-01-17 14:47:57 -0500 |
commit | 67d96e1995944039dc83fe8a4fcb8c2d67e81a90 (patch) | |
tree | 29d17a4c502b3575f00dd1c1c33e6f9abeac0520 /Carpet/LoopControl | |
parent | e0ddb73239c73c6de42a01204194173ce65ebff4 (diff) |
LoopControl: Circumvent Cray compiler bug
Diffstat (limited to 'Carpet/LoopControl')
-rw-r--r-- | Carpet/LoopControl/src/loopcontrol.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Carpet/LoopControl/src/loopcontrol.cc b/Carpet/LoopControl/src/loopcontrol.cc index 2c37a499c..1191a9b5c 100644 --- a/Carpet/LoopControl/src/loopcontrol.cc +++ b/Carpet/LoopControl/src/loopcontrol.cc @@ -765,8 +765,14 @@ void lc_selftest_set(lc_control_t const* restrict control, assert(i>=control->loop.min.v[0] and i<control->loop.max.v[0]); ptrdiff_t const ipos = ind(control->ash, i,j,k); unsigned char& elt = control->selftest_array[ipos]; +#ifdef _CRAYC + // Cray C++ compiler 8.1.2 segfaults on atomic +#pragma omp critical(lc_selftest_set) + ++elt; +#else #pragma omp atomic ++elt; +#endif if (elt!=1) { #pragma omp critical { |