Add pragma force_vectorize to emit error if loop is not vectorized.
Performance critical applications heavily rely on specific loops being vectorized.
Example:
class Sum {
public:
    __attribute__((noinline)) void sumData(uint64_t * data, size_t size) {
        /// This loop must be vectorized
        #pragma clang loop force_vectorize(enable)
        for (size_t i = 0; i < size; ++i) {
            sum += data[i];
        }
    }
private:
    uint64_t sum = 0;
};If someone breaks vectorization or new version compiler is unable to vectorize it, error will be emitted.
class Sum {
public:
    __attribute__((noinline)) void sumData(uint64_t * data, size_t size) {
        /// This loop must be vectorized
        #pragma clang loop force_vectorize(enable)
        for (size_t i = 0; i < size; ++i) {
            sum += data[i];
            sum += sum;
        }
    }
private:
    uint64_t sum = 0;
};
clang-17 -emit-llvm -S -O3 -g test_ir.cpp -o test_ir.ll
test_ir.cpp:9:9: error: loop not force vectorized: the optimizer was unable to perform the requested transformation; the transformation might be disabled or specified as part of an unsupported transformation ordering
    9 |         for (size_t i = 0; i < size; ++i) {
      |         ^
1 error generated.