Hi!

While looking if something doesn't need to be updated for the
i386-builtin.def addition (I think we are ok, this file doesn't need to be
shipped for plugins, as it is only included in i386.c, the first time
i386.c is built no matter what and next time we'll have it listed in
.deps/i386.Po), I've noticed IMHO incorrect dependency.
i386-builtin-types.inc is included only by i386.c, not by i386-c.c, and
while the second time it will be listed in .deps/i386.Po, I think if
somebody is unlucky enough that i386.o is compiled before i386-c.o, then
i386-builtin-types.inc might not be compiled yet.

As an experiment,
rm -f i386{,-c}.o .deps/i386{,-c}.Po s-i386-bt i386-builtin-types.inc
make i386.o
fails to compile without this patch.  i386-c.o apparently comes before
i386.o in dependencies of cc1, so even with make -j1 it is built before
that.  If I add sleep 4s into the s-i386-bt: rules before move-if-change
then even make -j16 build fails after the above rm, so it is all about good
timing.

Ok for trunk if testing passes?

2016-08-18  Jakub Jelinek  <ja...@redhat.com>

        * config/i386/t-i386 (i386-c.o): Don't depend on
        i386-builtin-types.inc.
        (i386.o): Depend on i386-builtin-types.inc.

--- gcc/config/i386/t-i386.jj   2016-01-04 14:55:56.000000000 +0100
+++ gcc/config/i386/t-i386      2016-08-18 09:23:28.523058356 +0200
@@ -19,10 +19,12 @@
 OPTIONS_H_EXTRA += $(srcdir)/config/i386/stringop.def
 TM_H += $(srcdir)/config/i386/x86-tune.def
 
-i386-c.o: $(srcdir)/config/i386/i386-c.c i386-builtin-types.inc
+i386-c.o: $(srcdir)/config/i386/i386-c.c
          $(COMPILE) $<
          $(POSTCOMPILE)
 
+i386.o: i386-builtin-types.inc
+
 i386-builtin-types.inc: s-i386-bt ; @true
 s-i386-bt: $(srcdir)/config/i386/i386-builtin-types.awk \
   $(srcdir)/config/i386/i386-builtin-types.def

        Jakub

Reply via email to