> -----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
> >>>

Reply via email to