On Fri, Nov 27, 2020 at 11:05 PM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote: > > As for the cc1plus cost, I got a similar result. > > Running scripts/gcc-plugin.sh directly > took me 0.5 sec, which is a fourth > of the allmodconfig run-time. > > Actually, I did not know this shell script > was so expensive to run... So it turns out that one reason it's so expensive to run is that it does a *lot* more than it claims to do. It says "we need a c++ compiler that supports the designated initializer GNU extension", but then it actually includes a header file from hell, rather than just test designated initializers. This patch makes the cc1plus overhead go down a lot. That said, I'm doubtful we really want gcc plugins at all, considering that the only real users have all apparently migrated to clang builtin functionality instead. Linus
scripts/gcc-plugin.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/gcc-plugin.sh b/scripts/gcc-plugin.sh index b79fd0bea838..59db87bff456 100755 --- a/scripts/gcc-plugin.sh +++ b/scripts/gcc-plugin.sh @@ -8,8 +8,8 @@ srctree=$(dirname "$0") gccplugins_dir=$($* -print-file-name=plugin) # we need a c++ compiler that supports the designated initializer GNU extension +test -e "$gccplugins_dir/include/plugin-version.h" && $HOSTCC -c -x c++ -std=gnu++98 - -fsyntax-only -I $srctree/gcc-plugins -I $gccplugins_dir/include 2>/dev/null <<EOF -#include "gcc-common.h" class test { public: int test;