aboutsummaryrefslogtreecommitdiff
path: root/Carpet/LoopControl
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-01-17 14:47:57 -0500
committerErik Schnetter <schnetter@gmail.com>2013-01-17 14:47:57 -0500
commit67d96e1995944039dc83fe8a4fcb8c2d67e81a90 (patch)
tree29d17a4c502b3575f00dd1c1c33e6f9abeac0520 /Carpet/LoopControl
parente0ddb73239c73c6de42a01204194173ce65ebff4 (diff)
LoopControl: Circumvent Cray compiler bug
Diffstat (limited to 'Carpet/LoopControl')
-rw-r--r--Carpet/LoopControl/src/loopcontrol.cc6
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
{