Voy a asumir que los compiladores en línea usan GCC o un compilador compatible. Por supuesto, cualquier otro compilador también puede hacer la misma optimización, pero la documentación de GCC explica bien lo que hace:
-faggressive-loop-optimizations
Esta opción le dice al optimizador de bucle que use restricciones de lenguaje para derivar límites para el número de iteraciones de un bucle. Esto supone que el código de bucle no invoca un comportamiento indefinido, por ejemplo, provocando desbordamientos de enteros con signo o accesos fuera de límites a la matriz. Los límites del número de iteraciones de un bucle se utilizan para guiar el desenrollado y pelado del bucle y las optimizaciones de la prueba de salida del bucle. Esta opción está activada de forma predeterminada.
Esta opción simplemente permite hacer suposiciones en base a los casos en los que se comprueba la UB. Para aprovechar esas suposiciones, es posible que sea necesario habilitar otras optimizaciones, como el plegado constante.
El desbordamiento de enteros con signo tiene un comportamiento indefinido. El optimizador pudo demostrar que cualquier valor i
mayor que 173 causaría UB, y debido a que puede asumir que no hay UB, también puede asumir que i
nunca es mayor que 173. Luego puede probar que i < 300
siempre es cierto, y por lo que la condición del bucle se puede optimizar.
¿Por qué 4169 y no algún otro valor?
Esos sitios probablemente limitan el número de líneas de salida (o caracteres o bytes) que muestran y comparten el mismo límite.