Use compare-debug for bootstrap-debug-lean to ignore != DW_AT_producer
authorAlexandre Oliva <aoliva@redhat.com>
Wed, 15 Nov 2017 03:11:37 +0000 (03:11 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Wed, 15 Nov 2017 03:11:37 +0000 (03:11 +0000)
Unlike bootstrap-debug, bootstrap-debug-lean used to pass compare using
the traditional compare command, because it compiled both stage2 and
stage3 with options that used to generate identical output
(-fcompare-debug= in stage2 vs -fcompare-debug in stage3).

Since we started adding relevant command-line flags to DW_AT_producer,
this is no longer the case, and stages 2 and 3 object files that differ
in nothing but the DW_AT_producer strings.

-fcompare-debug is short for -fcompare-debug=-gtoggle, so stage3
compiles twice, once with the normal options, once with toggled -g, to
then compare the temporary final dumps.  When enabled, both compilations
get from the driver an additional -frandom-seed flag (if none is given
explicitly).

-fcompare-debug= is short for -fno-compare-debug, disabling the second
compilation.

The difference between the DW_AT_producer lines are the different
-fcompare-debug flags, and the presence of the -frandom-seed flag in the
stage3 compilation.

It is easy and sensible enough to filter the -fcompare-debug flags out
of the DW_AT_producer string.  This option should never affect the
compilation output, it just determines whether or not to perform an
additional compilation that should produce the same executable output.

However, dropping -frandom-seed is not quite correct, in that it might
have other consequences on the compilation.  So, it makes little sense
to make the effort to drop it when it's implicit; for those comparing
compiler output differences, it might even hint at what causes, and
could fix, difficult to explain differences, namely, explicitly
supplying -frandom-seed options.

They don't seem to matter for compiler bootstraps, though, at least
for now, so we can safely refrain from issuing -frandom-seed (or maybe
we already issue it where needed :-), and then, for
bootstrap-debug-lean, use the compare-debug script, that strips out
debug information before comparing the object files.

for  config/ChangeLog

* bootstrap-debug-lean.mk (do-compare): Use the
contrib/compare-debug script.

for  gcc/ChangeLog

* dwarf2out.c (gen_producer_string): Discard
OPT_fcompare_debug.

From-SVN: r254750

config/ChangeLog
config/bootstrap-debug-lean.mk
gcc/ChangeLog
gcc/dwarf2out.c

index 2e3ead0a26b582c83d55e8316229a8d988a8d38b..90e1af4779dd0b39c3ab66c06839044f1e993e8f 100644 (file)
@@ -1,3 +1,8 @@
+2017-11-15  Alexandre Oliva <aoliva@redhat.com>
+
+       * bootstrap-debug-lean.mk (do-compare): Use the
+       contrib/compare-debug script.
+
 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
 
        * bootstrap-cet.mk: New file.
index e215280b09f36ff240bf997afc70167534076ea1..5f2db80687fa0eae1255a1f8f2e1b57a38f1ff18 100644 (file)
@@ -9,3 +9,4 @@
 
 STAGE2_CFLAGS += -fcompare-debug=
 STAGE3_CFLAGS += -fcompare-debug
+do-compare = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2
index 22431e52f4504e5cf31b8f6453b549435d525d95..70ae417b3661825ef44a69a54a92d17157f82b0f 100644 (file)
@@ -1,3 +1,8 @@
+2017-11-15  Alexandre Oliva <aoliva@redhat.com>
+
+       * dwarf2out.c (gen_producer_string): Discard
+       OPT_fcompare_debug.
+
 2017-11-15  Joseph Myers  <joseph@codesourcery.com>
 
        PR c/81156
index 1c08a2b4e18c7593f48fc2d4683be515357cc5d1..76a538f1ff97a69a0356feed2e8a9f3630b8971a 100644 (file)
@@ -23408,6 +23408,7 @@ gen_producer_string (void)
       case OPT_fltrans_output_list_:
       case OPT_fresolution_:
       case OPT_fdebug_prefix_map_:
+      case OPT_fcompare_debug:
        /* Ignore these.  */
        continue;
       default: