http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51635
--- Comment #17 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2011-12-21 13:47:16 UTC --- It's a little bit faster now. But it still takes 9 CPU-minutes to output all ltrans files. And then the following happens: At top level: lto1: internal compiler error: in dwarf2out_finish, at dwarf2out.c:22501 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. make[6]: *** [/tmp/ccQIIdf5.ltrans7.ltrans.o] Error 1 make[6]: *** Waiting for unfinished jobs.... lto1: internal compiler error: in dwarf2out_finish, at dwarf2out.c:22501 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. make[6]: *** [/tmp/ccQIIdf5.ltrans8.ltrans.o] Error 1 lto1: internal compiler error: in dwarf2out_finish, at dwarf2out.c:22501 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. make[6]: *** [/tmp/ccQIIdf5.ltrans10.ltrans.o] Error 1 :-( During the 9 minutes the following happens: + 27.72% lto1-wpa lto1 [.] htab_expand + 12.88% lto1-wpa lto1 [.] lto_read_decls + 12.04% lto1-wpa lto1 [.] linemap_lookup + 8.31% lto1-wpa lto1 [.] htab_find_slot_with_hash + 6.71% lto1-wpa lto1 [.] iterative_hash_hashval_t + 6.51% lto1-wpa lto1 [.] gimple_type_eq + 3.74% lto1-wpa lto1 [.] gimple_type_hash + 2.60% lto1-wpa libc-2.14.90.so [.] _int_malloc + 2.01% lto1-wpa libc-2.14.90.so [.] memset + 1.46% lto1-wpa lto1 [.] gtc_visit + 1.23% lto1-wpa lto1 [.] lookup_type_pair.isra.108 + 1.11% lto1-wpa libc-2.14.90.so [.] _int_free + 1.04% swapper [kernel.kallsyms] [k] default_idle Zoom into htab_expand: : static inline hashval_t : htab_mod_m2 (hashval_t hash, htab_t htab) : { : const struct prime_ent *p = &prime_tab[htab->size_prime_index]; : return 1 + htab_mod_1 (hash, p->prime - 2, p->inv_m2, p->shift); 0.00 : b6e9a4: sub %eax,%r9d 0.00 : b6e9a7: jmp b6e9ba <htab_expand+0x14a> 0.00 : b6e9a9: nopl 0x0(%rax) : index -= size; : : slot = htab->entries + index; : if (*slot == HTAB_EMPTY_ENTRY) : return slot; : else if (*slot == HTAB_DELETED_ENTRY) 5.04 : b6e9b0: cmp $0x1,%rax 6.16 : b6e9b4: je b6ea8b <htab_expand+0x21b> : abort (); : : hash2 = htab_mod_m2 (hash, htab); : for (;;) : { : index += hash2; 0.00 : b6e9ba: add %r9d,%edx : if (index >= size) 15.48 : b6e9bd: mov %edx,%eax 22.35 : b6e9bf: cmp %rax,%rsi 0.00 : b6e9c2: ja b6e9c8 <htab_expand+0x158> : index -= size; 0.63 : b6e9c4: sub %esi,%edx 12.78 : b6e9c6: mov %edx,%eax : : slot = htab->entries + index; 0.70 : b6e9c8: lea (%r10,%rax,8),%r8 : if (*slot == HTAB_EMPTY_ENTRY) 12.99 : b6e9cc: mov (%r8),%rax 0.63 : b6e9cf: test %rax,%rax 1.96 : b6e9d2: jne b6e9b0 <htab_expand+0x140> : PTR *q = find_empty_slot_for_expand (htab, (*htab->hash_f) (x)); : : *q = x; : } : : p++; 0.00 : b6e9d4: add $0x8,%r13 : : if (x != HTAB_EMPTY_ENTRY && x != HTAB_DELETED_ENTRY) : { : PTR *q = find_empty_slot_for_expand (htab, (*htab->hash_f) (x)); : : *q = x; 9.74 : b6e9d8: mov %r14,(%r8) : } : : p++; :