http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44563
Jan Hubicka <hubicka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dnovillo at google dot com --- Comment #6 from Jan Hubicka <hubicka at gcc dot gnu.org> 2010-12-13 00:58:04 UTC --- letting compilation to run longer I get: 3068656 60.0462 cc1 cc1 gsi_for_stmt 1211665 23.7093 cc1 cc1 cgraph_check_inline_limits 396594 7.7604 cc1 cc1 gimple_set_bb 29937 0.5858 libc-2.11.1.so libc-2.11.1.so _IO_vfscanf 23409 0.4581 libc-2.11.1.so libc-2.11.1.so _int_malloc 14539 0.2845 cc1 cc1 gimple_split_block 13307 0.2604 libc-2.11.1.so libc-2.11.1.so memset 9532 0.1865 cc1 cc1 htab_delete 8275 0.1619 cc1 cc1 bitmap_set_bit so gsi_for_stmt nonlinearity kicks in. I guess it is the inliner calling BB split and that calling gsi_for_stmt. We probably can have gsi_split_bb with gsi argument too. I always wondered why Diego did not embed gimple_seq_node_d into gimple statment (we don't have too many statements that would not be living in basic blocks so it would not be wasteful and it would result in better locality walking the lists). In that case gsi_for_stmt would become O(1). Honza