> -----Original Message----- > From: Bernd Edlinger <bernd.edlin...@hotmail.de> > Sent: Wednesday, July 14, 2021 4:56 PM > To: Tamar Christina <tamar.christ...@arm.com>; Michael Matz > <m...@suse.de> > Cc: gcc-patches@gcc.gnu.org; Richard Biener <rguent...@suse.de> > Subject: Re: [PATCH] Generate gimple-match.c and generic-match.c earlier > > On 7/14/21 2:47 PM, Tamar Christina wrote: > > Hi, > > > > Ever since this commit > > > > commit c9114f2804b91690e030383de15a24e0b738e856 > > Author: Bernd Edlinger <bernd.edlin...@hotmail.de> > > Date: Fri May 28 06:27:27 2021 +0200 > > > > Various tools have been having trouble with cross compilation > > resulting in > > > > make[2]: *** No rule to make target '../build-x86_64-build_pc-linux- > gnu/libcpp/libcpp.a', needed by 'build/genmatch'. > > > > (took a while to track down). I don't understand this part of the build > system well enough to know how to fix this. > > It looks like `libcpp.a` has special handling for cross compilers which now > seems to be broken. > > > > I can't reproduce it with our normal cross compiler scripts. Which handles > the stages on its own, but e.g. > > https://github.com/crosstool-ng/crosstool-ng does reproduce the failure. > > > > Sorry for the breakage! > > I do not know this tool at all, but this here looks suspicious, as it it > by-passes > the dependencies in the top-level Makefile: > > https://github.com/crosstool-ng/crosstool- > ng/blob/755850d07ec4e8dc44787d1a0e35fe19507f17f6/scripts/build/cc/gcc.s > h#L682-L683 > CT_DoExecLog CFG make ${CT_JOBSFLAGS} configure-gcc configure- > libcpp configure-build-libiberty > CT_DoExecLog ALL make ${CT_JOBSFLAGS} all-libcpp all-build- > libiberty ... > https://github.com/crosstool-ng/crosstool- > ng/blob/755850d07ec4e8dc44787d1a0e35fe19507f17f6/scripts/build/cc/gcc.s > h#L711-L712 > CT_DoExecLog ALL make ${CT_JOBSFLAGS} -C gcc ${libgcc_rule} \ > ${repair_cc} > > > but the top-level Makefile has also a dependency to all-build-libcpp: > > dependencies = { module=all-gcc; on=all-build-libcpp; }; dependencies = > { module=all-gcc; on=all-libcpp; hard=true; }; > > Maybe this just worked by chance, when building with "make -j" started a > parallel build, might build the build-libcpp dependency eventually, but due to > the patch it is needed earlier?
Ah I didn't notice they bypassed the top level makefile, this would explain why I can't reproduce it with my own scripts.. Thanks! I'll file a bug with them then. Kind Regards, Tamar > > > Bernd. > > > > > Any ideas what's going on? > > > > Kind Regards, > > Tamar > > > >> -----Original Message----- > >> From: Gcc-patches <gcc-patches-boun...@gcc.gnu.org> On Behalf Of > >> Michael Matz > >> Sent: Friday, May 28, 2021 4:33 PM > >> To: Bernd Edlinger <bernd.edlin...@hotmail.de> > >> Cc: gcc-patches@gcc.gnu.org; Richard Biener <rguent...@suse.de> > >> Subject: Re: [PATCH] Generate gimple-match.c and generic-match.c > >> earlier > >> > >> Hello, > >> > >> On Fri, 28 May 2021, Bernd Edlinger wrote: > >> > >>>>> I was wondering, why gimple-match.c and generic-match.c are not > >>>>> built early but always last, which slows down parallel makes > >>>>> significantly. > >>>>> > >>>>> The reason seems to be that generated_files does not mention > >>>>> gimple-match.c and generic-match.c. > >>>>> > >>>>> This comment in Makefile.in says it all: > >>>>> > >>>>> $(ALL_HOST_OBJS) : | $(generated_files) > >>>>> > >>>>> So this patch adds gimple-match.c generic-match.c to generated_files. > >>>>> > >>>>> > >>>>> Tested on x86_64-pc-linux-gnu. > >>>>> Is it OK for trunk? > >>>> > >>>> This should help for what I was complaining about in > >>>> https://gcc.gnu.org/pipermail/gcc/2021-May/235963.html . I build > >>>> with > >>>> -j24 and it was stalling on compiling gimple-match.c for me. > >>>> Looks like insn-attrtab.c is missed too; I saw genattrtab was > >>>> running last > >> too. > >>>> > >>> > >>> Yeah, probably insn-automata.c as well, sometimes it is picked up > >>> early sometimes not. maybe $(simple_generated_c) should be added to > >>> generated_files, but insn-attrtab.c is yet another exception. > >> > >> You can't put files in there that are sometimes slow to generate > >> (which insn- {attrtab,automata}.c are on some targets), as > >> _everything_ then waits for them to be created first. > >> > >> Ideally there would be a way for gnumake to mark some targets as > >> "ugh- slow" and back-propagate this to all dependencies so that those > >> are put in front of the work queue in a parallel make. Alas, > >> something like that never came into existence :-/ (When order-only > >> deps were introduced I got excited, but then came to realize that > >> that wasn't what was really needed for this case, a "weak" version of > >> it would be required at least, or better yet a specific facility to > >> impose a cost with a target) > >> > >> > >> Ciao, > >> Michael. > >> > >>> > >>> > >>> Bernd. > >>> > >>>> Thanks, > >>>> Andrew > >>>> > >>>>> > >>>>> > >>>>> Thanks > >>>>> Bernd. > >>>>> > >>>>> > >>>>> 2021-05-28 Bernd Edlinger <bernd.edlin...@hotmail.de> > >>>>> > >>>>> * Makefile.in (generated_files): Add gimple-match.c and > >>>>> generic-match.c > >>>