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 <rd...@gcc.gnu.org>: > > https://gcc.gnu.org/g:184378027e92f51e02d3649e0ca523f487fd2810 > > commit r14-5034-g184378027e92f51e02d3649e0ca523f487fd2810 > Author: Robin Dapp <rd...@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.