On April 27, 2017 10:20:57 PM GMT+02:00, Jakub Jelinek <ja...@redhat.com> wrote:
>Hi!
>
>This is something that fails bootstrap newly in GCC 7 and only with
>(now on the branch default --enable-checking=release (or
>--disable-checking)).  The problem is that the *-tests.c and
>selftest*.c
>sources after including some headers have the whole body guarded with
>#if CHECKING_P
>and with release checking thus there are no global symbols.
>symtab_node::debug_symtab is a static inline method with DEBUG_FUNCTION
>and thus
>is emitted (due to __attribute__((used))) - something we should really
>fix,
>by moving its definition out of cgraph.h.

Would that alone fix it?  Or making it non-static inline?

  I suppose graphite-* may have a similar issue if you build without ISL.

>For some unknown reason AIX cc1plus emits:
>        .csect _functiontests.ro_[RO],4
>        .align 2
>       .globl _GLOBAL__F_.._.._gcc_function_tests.c_DFF67DD7_0x28c82f7f
>_GLOBAL__F_.._.._gcc_function_tests.c_DFF67DD7_0x28c82f7f:
>Lframe..1:
>        .vbyte  4,LECIE..1-LSCIE..1
>and thus has the random seed in the symbol table.
>
>The following patch fixes it by making sure we build all the
>selftest*/*tests* objects with -frandom-seed=$@ and thus it is
>consistent.
>As a bonus for other targets, the objects are now put together and thus
>should be improve code locality for actual compiler code, not tests,
>when doing checking builds.
>
>Bootstrapped/regtested on x86_64-linux, i686-linux and (together with
>the libgomp patch I've already committed) on powerpc-ibm-aix7.2.0.0,
>ok for trunk/7.1?

OK.

Richard.

>I'd like to do a RC2 tomorrow.
>
>2017-04-27  Jakub Jelinek  <ja...@redhat.com>
>
>       PR bootstrap/80531
>       * Makefile.in (SELFTEST_OBJS): New variable.
>       For $(SELFTEST_OBJS) and selftest.o append -frandom-seed=$@ to
>       ALL_COMPILERFLAGS.
>       (OBJS): Remove *-tests.o and selftest-*.o, add $(SELFTEST_OBJS).
>
>--- gcc/Makefile.in.jj 2017-04-25 21:44:02.000000000 +0200
>+++ gcc/Makefile.in    2017-04-27 18:32:06.661511629 +0200
>@@ -1187,6 +1187,11 @@ C_COMMON_OBJS = c-family/c-common.o c-fa
>  c-family/array-notation-common.o c-family/cilk.o c-family/c-ubsan.o \
>   c-family/c-attribs.o c-family/c-warn.o
> 
>+# The self-test objects that are empty in release checking builds.
>+SELFTEST_OBJS = selftest-rtl.o selftest-run-tests.o \
>+  function-tests.o ggc-tests.o hash-map-tests.o hash-set-tests.o \
>+  rtl-tests.o
>+
> # Language-independent object files.
># We put the *-match.o and insn-*.o files first so that a parallel make
># will build them sooner, because they are large and otherwise tend to
>be
>@@ -1279,13 +1284,11 @@ OBJS = \
>       fold-const.o \
>       fold-const-call.o \
>       function.o \
>-      function-tests.o \
>       fwprop.o \
>       gcc-rich-location.o \
>       gcse.o \
>       gcse-common.o \
>       ggc-common.o \
>-      ggc-tests.o \
>       gimple.o \
>       gimple-builder.o \
>       gimple-expr.o \
>@@ -1319,8 +1322,6 @@ OBJS = \
>       graphite-sese-to-poly.o \
>       gtype-desc.o \
>       haifa-sched.o \
>-      hash-map-tests.o \
>-      hash-set-tests.o \
>       hsa-common.o \
>       hsa-gen.o \
>       hsa-regalloc.o \
>@@ -1429,7 +1430,6 @@ OBJS = \
>       resource.o \
>       rtl-chkp.o \
>       rtl-error.o \
>-      rtl-tests.o \
>       rtl.o \
>       rtlhash.o \
>       rtlanal.o \
>@@ -1443,8 +1443,6 @@ OBJS = \
>       sel-sched-ir.o \
>       sel-sched-dump.o \
>       sel-sched.o \
>-      selftest-rtl.o \
>-      selftest-run-tests.o \
>       sese.o \
>       shrink-wrap.o \
>       simplify-rtx.o \
>@@ -1574,7 +1572,8 @@ OBJS = \
>       xcoffout.o \
>       $(out_object_file) \
>       $(EXTRA_OBJS) \
>-      $(host_hook_obj)
>+      $(host_hook_obj) \
>+      $(SELFTEST_OBJS)
> 
># Objects in libcommon.a, potentially used by all host binaries and
>with
> # no target dependencies.
>@@ -1607,6 +1606,10 @@ $(ALL_HOST_BACKEND_OBJS): ALL_COMPILERFL
> $(ALL_HOST_BACKEND_OBJS): cc1plus.fda
> endif
> 
>+# The self-test objects are empty in release checking builds, make
>sure
>+# AIX/HPUX don't trigger comparison failures on them.
>+$(SELFTEST_OBJS) selftest.o: ALL_COMPILERFLAGS += -frandom-seed=$@
>+
> # This lists all host object files, whether they are included in this
> # compilation or not.
> ALL_HOST_OBJS = $(ALL_HOST_FRONTEND_OBJS) $(ALL_HOST_BACKEND_OBJS)
>
>       Jakub

Reply via email to