diff --git a/ggml-quants.c b/ggml-quants.c index 42bf749e9..5e4da4d37 100644 --- a/ggml-quants.c +++ b/ggml-quants.c @@ -1273,8 +1273,12 @@ static float make_qkx2_quants(int n, int nmax, const float * restrict x, const f float max = x[0]; float sum_w = weights[0]; float sum_x = sum_w * x[0]; - // Mark i as volatile to prevent the -O3 optimizer from unrolling this loop and breaking MacOS Sonoma quantization - for (volatile int i = 1; i < n; ++i) { ++#if defined(__APPLE__) && defined(__clang_major__) && __clang_major__ >= 15 ++ // use 'volatile' to prevent unroll and work around a bug in Apple clang 15.x.x ++ for (volatile int i = 1; i < n; ++i) { ++#else + for (int i = 1; i < n; ++i) { ++#endif if (x[i] < min) min = x[i]; if (x[i] > max) max = x[i]; float w = weights[i];