https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43210
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Well, I'm not convinced the #c0 transformation should be done by default, but what should and can be done is instead of emitting {42, 42, 42, ...., 42}; emit like the C or C++ FEs emit {[1..1000000] = 42} which is much more compile time memory friendly, and if the user doesn't require that it is SAVEd, e.g. the gimplifier has code to decide if having a .rodata initializer vs. initializing by a loop is beneficial. See PR82294 or PR87436 for the C++ counterparts. I see a single spot with RANGE_EXPR even in the Fortran FE, so maybe it does it already.