Index: tests/array-container/array-md-sbscr-cases.cfa
===================================================================
--- tests/array-container/array-md-sbscr-cases.cfa	(revision d653faf9558643c97bd4747f3030a2d569a8bea1)
+++ tests/array-container/array-md-sbscr-cases.cfa	(revision 938885d37b31a7fbc5553f3d8538c2b6498afd42)
@@ -27,4 +27,15 @@
 }
 
+// Work around a compiler optimization that can lead to false failures.
+// Think of `valExpected` as a constant local to each test function.
+// When implemented that way, an optimization, run on some hardware, makes
+// its value be off-by-a-little, compared with the values that have been
+// stored-loaded (in the array under test).  This effect has been observed
+// on x86-32 with -O3.  Declaring it as below forces the expected value 
+// to be stored-loaded too, which keeps the (admittedly lazily done)
+// `assert(f1 == f2)` checks passing, when the intended <w,x,y,z> location
+// is recovered, which is the point of all these tests.
+volatile float valExpected = 0.0;
+
 // Tests all the ways to split dimensions into CFA-supported chunks, by the only order that C supports: coarsest to finest stride.
 forall( [Nw], [Nx], [Ny], [Nz] )
@@ -36,6 +47,7 @@
     ptrdiff_t iw = 2, ix = 3, iy=4, iz=5;
 
-    const float valExpected = getMagicNumber(iw, ix, iy, iz);
-    assert( wxyz[iw][ix][iy][iz] == valExpected );
+    valExpected = getMagicNumber(iw, ix, iy, iz);
+    float valGot = wxyz[iw][ix][iy][iz];
+    assert( valGot == valExpected );
 
     // order wxyz, natural split (4-0 or 0-4, no intermediate to declare)
@@ -86,5 +98,5 @@
     ptrdiff_t iw = 2, ix = 3, iy=4, iz=5;
 
-    const float valExpected = getMagicNumber(iw, ix, iy, iz);
+    valExpected = getMagicNumber(iw, ix, iy, iz);
     assert( wxyz[iw][ix][iy][iz] == valExpected );
 
@@ -129,5 +141,5 @@
     ptrdiff_t iw = 2, ix = 3, iy=4, iz=5;
 
-    const float valExpected = getMagicNumber(iw, ix, iy, iz);
+    valExpected = getMagicNumber(iw, ix, iy, iz);
     assert( wxyz[iw][ix][iy][iz] == valExpected );
 
@@ -225,5 +237,5 @@
     fillHelloData(wxyz);
 
-    const float valExpected = getMagicNumber(2, 3, 4, 5);
+    valExpected = getMagicNumber(2, 3, 4, 5);
     assert(( wxyz [2] [3] [4] [5]  == valExpected ));
     assert(( wxyz[[2,  3]][4] [5]  == valExpected ));
