On Mon, Sep 03, 2018 at 02:14:55PM +0000, Joseph Myers wrote:
> On Sat, 1 Sep 2018, Jakub Jelinek wrote:
> 
> > Couldn't we do something smarter than this?
> > Noticed while debugging why our bisect seed machine spends over 2 minutes in
> > sed when handling config.status, and the reason apparently was that it has
> > " : (reconfigured) " string in it 37753 times, so almost 700KB just in
> > that.  If it is useful information how many times gcc has been reconfigured,
> > can't we use a human readable form instead, where we add
> > " : (reconfigured) " the first time and then just change it to
> > " : (2x reconfigured) ", ..., " : (37753x reconfigured) " etc.?
> > 
> > Also, don't we actually add the above way $TOPLEVEL_CONFIGURE_ARGUMENTS
> > multiple times (if not empty, that is)?
> 
> I think my original idea when adding this information in 
> <https://gcc.gnu.org/ml/gcc-patches/2000-11/msg00289.html> was that, if 
> reconfigured, the arguments in TOPLEVEL_CONFIGURE_ARGUMENTS might include 
> synthetic ones created by config.status.  So simply using 
> TOPLEVEL_CONFIGURE_ARGUMENTS (and ignoring the previous set of configure 
> arguments) in the case of reconfiguration would give misleading results, 
> but also not mentioning it at all would give misleading results if someone 
> did in fact specify different configure options manually when 
> reconfiguring.  I was not expecting 37753x reconfiguration.

That was in our bisect seed...

Would the following minimal patch be acceptable, which just doesn't append
the " : (reconfigured) " + arguments if the configure arguments already end
with exactly that?

Bootstrapped/regtested on x86_64-linux and i686-linux, plus tested with
./config.status --recheck done the first time after configure (reconfigured
added) and second and following time (not added).  Ok for trunk?

2018-09-12  Jakub Jelinek  <ja...@redhat.com>

        * configure.ac: Only append
        " : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" to
        gcc_config_arguments if it was never reconfigured or last reconfigure
        was with different arguments.
        * configure: Regenerated.

--- gcc/configure.ac.jj 2018-08-26 22:42:22.518779717 +0200
+++ gcc/configure.ac    2018-09-12 19:10:14.714835001 +0200
@@ -1744,7 +1744,10 @@ changequote(,)dnl
 if test -f configargs.h ; then
        # Being re-configured.
        gcc_config_arguments=`grep configuration_arguments configargs.h | sed 
-e 's/.*"\([^"]*\)".*/\1/'`
-       gcc_config_arguments="$gcc_config_arguments : (reconfigured) 
$TOPLEVEL_CONFIGURE_ARGUMENTS"
+       gcc_reconf_arguments=`echo "$gcc_config_arguments" | sed -e 's/^.*\( : 
(reconfigured) .*$\)/\1/'`
+       if [ "$gcc_reconf_arguments" != " : (reconfigured) 
$TOPLEVEL_CONFIGURE_ARGUMENTS" ]; then
+               gcc_config_arguments="$gcc_config_arguments : (reconfigured) 
$TOPLEVEL_CONFIGURE_ARGUMENTS"
+       fi
 else
        gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
 fi
--- gcc/configure.jj    2018-08-26 22:42:05.912058938 +0200
+++ gcc/configure       2018-09-12 19:10:39.358433613 +0200
@@ -11836,7 +11836,10 @@ xm_file="auto-host.h ansidecl.h ${xm_fil
 if test -f configargs.h ; then
        # Being re-configured.
        gcc_config_arguments=`grep configuration_arguments configargs.h | sed 
-e 's/.*"\([^"]*\)".*/\1/'`
-       gcc_config_arguments="$gcc_config_arguments : (reconfigured) 
$TOPLEVEL_CONFIGURE_ARGUMENTS"
+       gcc_reconf_arguments=`echo "$gcc_config_arguments" | sed -e 's/^.*\( : 
(reconfigured) .*$\)/\1/'`
+       if [ "$gcc_reconf_arguments" != " : (reconfigured) 
$TOPLEVEL_CONFIGURE_ARGUMENTS" ]; then
+               gcc_config_arguments="$gcc_config_arguments : (reconfigured) 
$TOPLEVEL_CONFIGURE_ARGUMENTS"
+       fi
 else
        gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
 fi
@@ -18460,7 +18463,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 18463 "configure"
+#line 18466 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -18566,7 +18569,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 18569 "configure"
+#line 18572 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -19731,20 +19734,20 @@ if test -z "$aix_libpath"; then aix_libp
              prelink_cmds_CXX='tpldir=Template.dir~
                rm -rf $tpldir~
                $CC --prelink_objects --instantiation_dir $tpldir $objs 
$libobjs $compile_deplibs~
-               compile_command="$compile_command `find $tpldir -name \*.o | 
$NL2SP`"'
+               compile_command="$compile_command `find $tpldir -name \*.o | 
sort | $NL2SP`"'
              old_archive_cmds_CXX='tpldir=Template.dir~
                rm -rf $tpldir~
                $CC --prelink_objects --instantiation_dir $tpldir 
$oldobjs$old_deplibs~
-               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name 
\*.o | $NL2SP`~
+               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name 
\*.o | sort | $NL2SP`~
                $RANLIB $oldlib'
              archive_cmds_CXX='tpldir=Template.dir~
                rm -rf $tpldir~
                $CC --prelink_objects --instantiation_dir $tpldir 
$predep_objects $libobjs $deplibs $convenience $postdep_objects~
-               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find 
$tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname 
${wl}$soname -o $lib'
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find 
$tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags 
${wl}-soname ${wl}$soname -o $lib'
              archive_expsym_cmds_CXX='tpldir=Template.dir~
                rm -rf $tpldir~
                $CC --prelink_objects --instantiation_dir $tpldir 
$predep_objects $libobjs $deplibs $convenience $postdep_objects~
-               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find 
$tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname 
${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find 
$tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags 
${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o 
$lib'
              ;;
            *) # Version 6 and above use weak symbols
              archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs 
$deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'


        Jakub

Reply via email to