>>>>> "Lorenzo" == Lorenzo Stoakes (ARM) <[email protected]> writes:

> Each kernel make invocation begins with ~30 compiler and linker runs each
> of which performs duplicate probe for a number of compiler and linker
> options.

> This is useless work - the compiler and its version is known, so use these
> to determine which options are available, once.

> A convention already exists for this - CC_HAS_xxx, LD_HAS_xxx in Kconfig
> files (for example, CC_HAS_COUNTED_BY), so convert these probes to Kconfig
> options where appropriate.

> This change avoids a sublte issue with ppc32 (big endian) - clang doesn't
                       ^^^^^^

subtle

> accept -fno-stack-clash-protection on this sub-target, so keep this option
> in the Makefile.

> With gcc and clang, defconfig and allmodconfig, the recorded command
> lines are unchanged, a build with nothing to do rebuilds nothing and W=1
> continues to function correctly.

> Doing this improves all builds, but has a particularly positive impact on
> no-op builds (builds where nothing has changed).

> Whole build, 128-thread Threadripper 9980X, best of N runs:

>                                          before   after     delta
>                                          -------------------------------
>   x86 defconfig, no-op make, gcc           0.78s    0.60s    -0.18s (-23%)
>   x86 defconfig, no-op make, clang         0.94s    0.66s    -0.28s (-30%)
>   x86 defconfig, touch mm/vma.c, gcc        8.6s     8.5s    -0.16s (-2%)
>   x86 defconfig, touch mm/vma.c, clang      8.0s     7.7s    -0.24s (-3%)
>   x86 defconfig, clean, clang              29.8s    29.4s    -0.37s (-1%)
>   x86 allmodconfig, no-op make, gcc        12.9s    12.7s    -0.23s (-2%)
>   x86 allmodconfig, no-op make, clang      14.2s    13.9s    -0.29s (-2%)
>   x86 allmodconfig, touch mm/vma.c, clang  32.2s    31.9s    -0.30s (-1%)

Are these deltas just per-patch, but cumulative with all the previous
patches applied?   


Reply via email to