diff --git a/SingleSource/UnitTests/Vectorizer/runtime-checks.cpp b/SingleSource/UnitTests/Vectorizer/runtime-checks.cpp --- a/SingleSource/UnitTests/Vectorizer/runtime-checks.cpp +++ b/SingleSource/UnitTests/Vectorizer/runtime-checks.cpp @@ -239,6 +239,22 @@ "1 read, 1 write, induction increment 2, uint64_t"); } + { + DEFINE_SCALAR_AND_VECTOR_FN2( + for (unsigned i = 0, sum = 0; i < TC; i++) { + sum += A[i] + 10; + B[TC / 2] = sum; + } + ); + + checkOverlappingMemoryOneRuntimeCheck( + ScalarFn, VectorFn, "1 read, 1 write to invariant address, step 1, uint8_t"); + checkOverlappingMemoryOneRuntimeCheck( + ScalarFn, VectorFn, "1 read, 1 write to invariant address, step 1, uint32_t"); + checkOverlappingMemoryOneRuntimeCheck( + ScalarFn, VectorFn, "1 read, 1 write to invariant address, step 1, uint64_t"); + } + { DEFINE_SCALAR_AND_VECTOR_FN3( for (unsigned i = 0; i < TC; i++) diff --git a/SingleSource/UnitTests/Vectorizer/runtime-checks.reference_output b/SingleSource/UnitTests/Vectorizer/runtime-checks.reference_output --- a/SingleSource/UnitTests/Vectorizer/runtime-checks.reference_output +++ b/SingleSource/UnitTests/Vectorizer/runtime-checks.reference_output @@ -19,6 +19,9 @@ Checking 1 read, 1 write, induction increment 2, uint8_t Checking 1 read, 1 write, induction increment 2, uint32_t Checking 1 read, 1 write, induction increment 2, uint64_t +Checking 1 read, 1 write to invariant address, step 1, uint8_t +Checking 1 read, 1 write to invariant address, step 1, uint32_t +Checking 1 read, 1 write to invariant address, step 1, uint64_t Checking 2 reads, 1 write, simple indices, uint32_t Checking 2 reads, 1 write, simple indices, uint8_t Checking 2 reads, 1 write, simple indices, uint64_t