Set the i386 default for MD generator partitions to 6:6:1.

The longest objects in the bootstrap are gimple-match-[1..10].o,
with per-file user times of:

user    0m12,114s
user    0m6,214s
user    0m6,737s
user    0m8,234s
user    0m5,765s
user    0m5,221s
user    0m5,732s
user    0m5,221s
user    0m5,645s
user    0m7,951s

while generic-match-[1..10].o compile in:

user    0m5,875s
user    0m5,186s
user    0m4,132s
user    0m4,367s
user    0m4,464s
user    0m4,705s
user    0m4,340s
user    0m5,942s
user    0m4,469s
user    0m4,236s

With the default set to 6:6:1, compile times become:

insn-emit-[1..6].o:

user    0m4,766s
user    0m4,799s
user    0m4,829s
user    0m4,825s
user    0m4,766s
user    0m4,781s

insn-recog-[1..6].o:

user    0m4,782s
user    0m4,741s
user    0m4,988s
user    0m4,814s
user    0m4,918s
user    0m4,898s

insn-attrtab-1.o:

user    0m3,076s

which are all comparable to the generic-match-[1..10].o compile times.

Raising the partition counts further would shorten objects that are
already off the critical path, while each additional partition
repeats the per-file preamble, adding to overall bootstrap CPU time.

gcc/ChangeLog:

* config.gcc (i[34567]86-*-* | x86_64-*-*): Set
default_md_generator_partitions target default to 6:6:1.

Bootstrapped on x86_64-pc-linux-gnu.

BTW: It looks like 6:6:1 should be the default for all targets. i386
has one of the largest insn-*.cc sources and measurements confirm that
aarch64 default is also optimal for i386.

Uros.
diff --git a/gcc/config.gcc b/gcc/config.gcc
index ef117b293df..d651c3aae37 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -443,6 +443,7 @@ fido-*-*)
         ;;
 i[34567]86-*-* | x86_64-*-*)
        cpu_type=i386
+       default_md_generator_partitions=6:6:1
        c_target_objs="i386-c.o"
        cxx_target_objs="i386-c.o"
        d_target_objs="i386-d.o"

Reply via email to