https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108552
--- Comment #17 from Uroš Bizjak <ubizjak at gmail dot com> --- The assembly is just mirroring what tree optimizers prepare: pretmp_94 = __gcov0.prep_compound_page[7]; _179 = pretmp_94 + 1; ivtmp.1725_211 = (unsigned long long) _179; ... <bb 9> [local count: 955630225]: # ivtmp.1725_77 = PHI <ivtmp.1725_69(9), ivtmp.1725_211(8)> # ivtmp.1730_178 = PHI <ivtmp.1730_168(9), ivtmp.1730_157(8)> p_16 = (struct page *) ivtmp.1730_178; MEM <struct address_space *> [(union *)p_16 + 12B] = 1024B; MEM[(volatile long unsigned int *)p_16 + 4B] ={v} _95; PROF_edge_counter_46 = (long long int) ivtmp.1725_77; __gcov0.prep_compound_page[7] = PROF_edge_counter_46; ivtmp.1725_69 = ivtmp.1725_77 + 1; ivtmp.1730_168 = ivtmp.1730_178 + 40; if (_19 != ivtmp.1725_69) goto <bb 9>; [89.00%] else goto <bb 7>; [11.00%] So, loop variable is initialized to __gcov0.prep_compound_page[7] ???