Check the bool value of the attribute in getOptionalBoolLoopAttribute
not just its existance. If the llvm.loop.vectorize exists, but is set to false, hasVectorizeTransformation would return TM_ForcedByUser instead of TM_SuppressedByUser.
This eliminates the warning noise generated when vectorization is explicitly disabled.

The check hasVectorizeTransformation(L) in front checks whether vectorization is forced by the user. It is not necessary that the user also fixes the simd width/interleave count. Hence, the warning is valid in this case. It is the same behavior as before rL348944 (which I tried to replicate).

Mistaken source of the noise, the bug I was chasing was in getOptionalBoolLoopAttribute, called by hasVectorizeTransformation(L).
If the llvm.loop.vectorize exists, but is set to false, hasVectorizeTransformation would return TM_ForcedByUser instead of TM_SuppressedByUser.