Skip to contentSkip to conversation

gcc: Don't mess with test-suite exclusion

PATCH New Alexey Brodkin 4 participants 4 messages Oct 30, 2018 – Nov 3, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 gcc: Don't mess with test-suite exclusion

We used to exclude GCC's test-suite for quite some time now mostly for the sake of build time reduction.

But:
1. On each GCC version bump we need to revise that functionality as we need to accommodate changes in GCC sources and this couldn't be automated

2. As of today we don't seem to save a lot of time really. Below are timings of 2 runs on my laptop:

a) Vanilla master:
--------------------->8---------------------
time make host-gcc-final
real 7m15.114s
user 19m36.611s
sys 2m26.927s
--------------------->8---------------------

b) master + testsuite:
--------------------->8---------------------
time make host-gcc-final
real 7m59.860s
user 20m21.668s
sys 2m36.618s
--------------------->8---------------------

From figures above it's seen that difference is ~45 seconds or ~10%. On both host-gcc-initial and -final we may save ~1.5 minutes... but these are not the only components we build and compared to a total toolchain build time IMHO it is not that much time to care especially traded for maintenance costs on GCC version bumps.

Cc Thomas Petazzoni <[email protected]>
Cc Bernd Kuhls <[email protected]>
Cc Romain Naour <[email protected]>
Cc Peter Korsgaard <[email protected]>
Cc Arnout Vandecappelle <[email protected]>
---
 package/gcc/7.3.0/0900-remove-selftests.patch | 111 -------------
 package/gcc/8.2.0/0003-remove-selftests.patch | 149 ------------------
 .../arc-2018.03/0900-remove-selftests.patch   | 111 -------------
 package/gcc/gcc.mk                            |   9 +-
 4 files changed, 1 insertion(+), 379 deletions(-)
 delete mode 100644 package/gcc/7.3.0/0900-remove-selftests.patch
 delete mode 100644 package/gcc/8.2.0/0003-remove-selftests.patch
 delete mode 100644 package/gcc/arc-2018.03/0900-remove-selftests.patch
package/gcc/7.3.0/0900-remove-selftests.patch deleted +0 -111
deleted file mode 100644
index a3bc7a573050..000000000000
@@ -1,111 +0,0 @@
-From 63f0917d90eb83d267dc517fdfb6523a74b1917c Mon Sep 17 00:00:00 2001
-From: Romain Naour <[email protected]>
-Date: Wed, 3 May 2017 00:37:06 +0200
-Subject: [PATCH] remove selftests
-
-When the gcc archive is extracted by the gcc.mk, the gcc/testsuite
-is excluded:
-
-HOST_GCC_EXCLUDES = \
-	libjava/* libgo/* \
-	gcc/testsuite/* libstdc++-v3/testsuite/*
-
-The new Makefile target from the "Selftest framework" [1] added a dependency
-on the gcc/testsuite/Makefile.
-Revert partially the commit [1] to allow building gcc without selftest.
-
-[1] https://github.com/gcc-mirror/gcc/commit/99b4f3a2d5bf2c137de9731e27b483eb6b462fd9
-
-Signed-off-by: Romain Naour <[email protected]>
----
- gcc/Makefile.in | 46 +++++-----------------------------------------
- 1 file changed, 5 insertions(+), 41 deletions(-)
-
-diff --git a/gcc/Makefile.in b/gcc/Makefile.in
-index 74d1912..652a554 100644
---- a/gcc/Makefile.in
-+++ b/gcc/Makefile.in
-@@ -1581,14 +1581,13 @@ OBJS = \
- OBJS-libcommon = diagnostic.o diagnostic-color.o diagnostic-show-locus.o \
- 	edit-context.o \
- 	pretty-print.o intl.o \
--	vec.o input.o version.o hash-table.o ggc-none.o memory-block.o \
--	selftest.o
-+	vec.o input.o version.o hash-table.o ggc-none.o memory-block.o
- 
- # Objects in libcommon-target.a, used by drivers and by the core
- # compiler and containing target-dependent code.
- OBJS-libcommon-target = $(common_out_object_file) prefix.o params.o \
- 	opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o \
--	hash-table.o file-find.o spellcheck.o selftest.o
-+	hash-table.o file-find.o spellcheck.o
- 
- # This lists all host objects for the front ends.
- ALL_HOST_FRONTEND_OBJS = $(foreach v,$(CONFIG_LANGUAGES),$($(v)_OBJS))
-@@ -1865,10 +1864,10 @@ config.status: $(srcdir)/configure $(srcdir)/config.gcc
- quickstrap: all
- 	cd $(toplevel_builddir) && $(MAKE) all-target-libgcc
- 
--all.internal: start.encap rest.encap doc selftest
-+all.internal: start.encap rest.encap doc
- # This is what to compile if making a cross-compiler.
- all.cross: native gcc-cross$(exeext) cpp$(exeext) specs \
--	libgcc-support lang.all.cross doc selftest @GENINSRC@ srcextra
-+	libgcc-support lang.all.cross doc @GENINSRC@ srcextra
- # This is what must be made before installing GCC and converting libraries.
- start.encap: native xgcc$(exeext) cpp$(exeext) specs \
- 	libgcc-support lang.start.encap @GENINSRC@ srcextra
-@@ -1888,41 +1887,6 @@ endif
- # This does the things that can't be done on the host machine.
- rest.cross: specs
- 
--# GCC's selftests.
--# Specify a dummy input file to placate the driver.
--# Specify -nostdinc to work around missing WIND_BASE environment variable
--# required for *-wrs-vxworks-* targets.
--# Specify -o /dev/null so the output of -S is discarded. More importantly
--# It does not try to create a file with the name "null.s" on POSIX and
--# "nul.s" on Windows. Because on Windows "nul" is a reserved file name.
--# Specify the path to gcc/testsuite/selftests within the srcdir
--# as an argument to -fself-test.
--SELFTEST_FLAGS = -nostdinc -x c /dev/null -S -o /dev/null \
--	-fself-test=$(srcdir)/testsuite/selftests
--
--# Run the selftests during the build once we have a driver and a cc1,
--# so that self-test failures are caught as early as possible.
--# Use "s-selftest" to ensure that we only run the selftests if the
--# driver, cc1, or selftest data change.
--.PHONY: selftest
--selftest: s-selftest
--s-selftest: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs \
--  $(srcdir)/testsuite/selftests
--	$(GCC_FOR_TARGET) $(SELFTEST_FLAGS)
--	$(STAMP) $@
--
--# Convenience method for running selftests under gdb:
--.PHONY: selftest-gdb
--selftest-gdb: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs
--	$(GCC_FOR_TARGET) $(SELFTEST_FLAGS) \
--	  -wrapper gdb,--args
--
--# Convenience method for running selftests under valgrind:
--.PHONY: selftest-valgrind
--selftest-valgrind: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs
--	$(GCC_FOR_TARGET) $(SELFTEST_FLAGS) \
--	  -wrapper valgrind,--leak-check=full
--
- # Recompile all the language-independent object files.
- # This is used only if the user explicitly asks for it.
- compilations: $(BACKEND)
-@@ -2076,7 +2040,7 @@ gcc-nm.c: gcc-ar.c
- 	cp $^ $@
- 
- COLLECT2_OBJS = collect2.o collect2-aix.o tlink.o vec.o ggc-none.o \
--  collect-utils.o file-find.o hash-table.o selftest.o
-+  collect-utils.o file-find.o hash-table.o
- COLLECT2_LIBS = @COLLECT2_LIBS@
- collect2$(exeext): $(COLLECT2_OBJS) $(LIBDEPS)
- # Don't try modifying collect2 (aka ld) in place--it might be linking this.
--- 
-2.9.3
-
package/gcc/8.2.0/0003-remove-selftests.patch deleted +0 -149

149 lines not on this page · raw message

package/gcc/arc-2018.03/0900-remove-selftests.patch deleted +0 -111

111 lines not on this page · raw message

package/gcc/gcc.mk +1 -8
index 9e9069ce0e27..abc7a641d53b 100644
@@ -62,14 +62,7 @@ define HOST_GCC_APPLY_PATCHES
 endef
 
 HOST_GCC_EXCLUDES = \
-	libjava/* libgo/* \
-	gcc/testsuite/* libstdc++-v3/testsuite/*
-
-define HOST_GCC_FAKE_TESTSUITE
-	mkdir -p $(@D)/libstdc++-v3/testsuite/
-	echo "all:" > $(@D)/libstdc++-v3/testsuite/Makefile.in
-	echo "install:" >> $(@D)/libstdc++-v3/testsuite/Makefile.in
-endef
+	libjava/* libgo/*
 
 #
 # Create 'build' directory and configure symlink
Signature · 1 line
2.17.2
#1 lore raw

PATCH 1/1 gcc: Don't mess with test-suite exclusion

Quoted 2 lines · Alexey Brodkin

We used to exclude GCC's test-suite for quite some time now mostly for the sake of build time reduction.

Actually, it was excluded to save space, not build time. But in the end, it
also saves at best 20% of the overall spaces. So I've updated the commit message to reflect that and applied to master, thanks.

Romain, I believe you introduced this feature. If you do think there's a good
reason to keep it, please send a revert.

Regards,
Arnout

#2 lore raw

PATCH 1/1 gcc: Don't mess with test-suite exclusion

Hello,

Quoted 2 lines · Arnout Vandecappelle

Romain, I believe you introduced this feature. If you do think there's a good
reason to keep it, please send a revert.

Actually, I was the one who introduced it. See
00e9b1e4f78633d5667b187332f36972a94b9f8b.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
#3 lore raw

PATCH 1/1 gcc: Don't mess with test-suite exclusion

Hi, All,

Le 03/11/2018 ? 12:08, Thomas Petazzoni a ?crit?:

Quoted 6 lines

Hello,

Quoted 2 lines · Arnout Vandecappelle

Romain, I believe you introduced this feature. If you do think there's a good
reason to keep it, please send a revert.

It's fine for me as soon as the testsuite build :)

Quoted 3 lines

Actually, I was the one who introduced it. See
00e9b1e4f78633d5667b187332f36972a94b9f8b.

Indeed, I added a patch to build the toolchain without the testsuite since gcc7.

Best regards,
Romain

Quoted 5 lines

Best regards,

Thomas