https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118168
--- Comment #7 from Andi Kleen <andi-gcc at firstfloor dot org> --- Actually in my case where i interrupted and the difference was 60k i think the problem was that the lexer offset was beyond the 100 lines where the position is cached, and when that happens the file_cache just starts reading from the beginning of the file again and that burns all the CPU time. (and that can repeat many times as the position moves forward and backwards) So the problem is really why is the lexer so far ahead of the parser. But also it's a general problem, even if it wasn't ahead e.g. if someone has a 100 line comment somewhere in the middle of a statement it could cause this behavior too.