[Bug target/111600] [14/15 Regression] RISC-V bootstrap time regression
mark at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jul 30 19:17:19 GMT 2024
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111600
--- Comment #35 from Mark Wielaard <mark at gcc dot gnu.org> ---
(In reply to GCC Commits from comment #28)
> The master branch has been updated by Robin Dapp <rdapp@gcc.gnu.org>:
>
> https://gcc.gnu.org/g:184378027e92f51e02d3649e0ca523f487fd2810
>
> commit r14-5034-g184378027e92f51e02d3649e0ca523f487fd2810
> Author: Robin Dapp <rdapp@ventanamicro.com>
> Date: Thu Oct 12 11:23:26 2023 +0200
>
> genemit: Split insn-emit.cc into several partitions.
>
> On riscv insn-emit.cc has grown to over 1.2 mio lines of code and
> compiling it takes considerable time.
> Therefore, this patch adjust genemit to create several partitions
> (insn-emit-1.cc to insn-emit-n.cc). The available patterns are
> written to the given files in a sequential fashion.
>
> Similar to match.pd a configure option --with-emitinsn-partitions=num
> is introduced that makes the number of partition configurable.
The size of the partitions is a little uneven though. Using
--with-emitinsn-partitions=48 I get some empty partitions and some bigger than
2MB:
$ du -sb insn-emit-*cc | sort -n
814 insn-emit-12.cc
814 insn-emit-26.cc
814 insn-emit-27.cc
814 insn-emit-28.cc
113694 insn-emit-1.cc
168449 insn-emit-2.cc
197478 insn-emit-4.cc
231826 insn-emit-25.cc
264612 insn-emit-24.cc
269851 insn-emit-3.cc
273807 insn-emit-23.cc
309345 insn-emit-15.cc
354863 insn-emit-22.cc
399238 insn-emit-29.cc
469333 insn-emit-13.cc
494480 insn-emit-16.cc
529290 insn-emit-7.cc
548060 insn-emit-14.cc
587349 insn-emit-8.cc
605757 insn-emit-18.cc
654426 insn-emit-11.cc
674447 insn-emit-21.cc
715062 insn-emit-6.cc
719623 insn-emit-30.cc
722383 insn-emit-17.cc
739181 insn-emit-5.cc
740943 insn-emit-19.cc
752354 insn-emit-10.cc
775514 insn-emit-9.cc
798665 insn-emit-37.cc
864751 insn-emit-39.cc
880633 insn-emit-45.cc
898498 insn-emit-20.cc
921502 insn-emit-47.cc
927048 insn-emit-38.cc
940841 insn-emit-46.cc
954115 insn-emit-33.cc
979274 insn-emit-44.cc
1054316 insn-emit-32.cc
1133828 insn-emit-31.cc
1151717 insn-emit-40.cc
1190472 insn-emit-36.cc
1207434 insn-emit-41.cc
1218249 insn-emit-43.cc
1299464 insn-emit-42.cc
1887267 insn-emit-34.cc
1977532 insn-emit-35.cc
2935485 insn-emit-48.cc
Note that the last one (insn-emit-48.cc) is much larger than the rest.
Something similar happens with --with-emitinsn-partitions=20 where the smallest
one is just 120K but the biggest (and again the last one) is 4.3M.
$ du -sb insn-emit-*cc | sort -n
122643 insn-emit-11.cc
466445 insn-emit-12.cc
545997 insn-emit-1.cc
691176 insn-emit-10.cc
773776 insn-emit-2.cc
1027938 insn-emit-6.cc
1138222 insn-emit-5.cc
1524621 insn-emit-9.cc
1558328 insn-emit-3.cc
1730818 insn-emit-7.cc
1865168 insn-emit-4.cc
1893646 insn-emit-8.cc
2174548 insn-emit-16.cc
2378629 insn-emit-19.cc
2404572 insn-emit-13.cc
2840108 insn-emit-17.cc
2894107 insn-emit-14.cc
3030400 insn-emit-18.cc
4156366 insn-emit-15.cc
4486663 insn-emit-20.cc
Another problematic file is insn-recog.cc which is 19MB and takes 1 hour+ to
compile for me.
More information about the Gcc-bugs
mailing list