dumpfile.c: use prefixes other than 'note: ' for MSG_{OPTIMIZED_LOCATIONS|MISSED_OPTI...
authorDavid Malcolm <dmalcolm@redhat.com>
Fri, 28 Sep 2018 17:40:04 +0000 (17:40 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Fri, 28 Sep 2018 17:40:04 +0000 (17:40 +0000)
commited2d9d3720adef3a260b8a55e17e744352a901fc
tree53b1bfbea366b01dd4b7d2ab8e3c405d9b2c7509
parent5718d9d95fd9457c9f6cf49526ef52f974d9419c
dumpfile.c: use prefixes other than 'note: ' for MSG_{OPTIMIZED_LOCATIONS|MISSED_OPTIMIZATION}

As noted at Cauldron, dumpfile.c currently emits "note: " for all kinds
of dump message, so that (after filtering) there's no distinction between
MSG_OPTIMIZED_LOCATIONS vs MSG_NOTE vs MSG_MISSED_OPTIMIZATION in the
textual output.

This patch changes dumpfile.c so that the "note: " varies to show
which MSG_* was used, with the string prefix matching that used for
filtering in -fopt-info, hence e.g.
  directive_unroll_3.f90:24:0: optimized: loop unrolled 7 times
and:
  pr19210-1.c:24:3: missed: missed loop optimization: niters analysis ends up with assumptions.

The patch adds "dg-optimized" and "dg-missed" directives for use
in the testsuite for matching these (with -fopt-info on stderr; they
don't help for dumpfile output).

The patch also converts the various problem-reporting dump messages
in coverage.c:get_coverage_counts to use MSG_MISSED_OPTIMIZATION
rather than MSG_OPTIMIZED_LOCATIONS, as the docs call out "optimized"
as
  "information when an optimization is successfully applied",
whereas "missed" is for
  "information about missed optimizations",
and problems with profile data seem to me to fall much more into the
latter category than the former.  Doing so requires converting a few
tests from using "-fopt-info" (which is implicitly
"-fopt-info-optimized-optall") to getting the "missed" optimizations.
Changing them to "-fopt-info-missed" added lots of noise from the
vectorizer, so I changed these tests to use "-fopt-info-missed-ipa".

gcc/ChangeLog:
* coverage.c (get_coverage_counts): Convert problem-reporting dump
messages from MSG_OPTIMIZED_LOCATIONS to MSG_MISSED_OPTIMIZATION.
* dumpfile.c (kind_as_string): New function.
(dump_loc): Rather than a hardcoded prefix of "note: ", use
kind_as_string to vary the prefix based on dump_kind.
(selftest::test_capture_of_dump_calls): Update for above.

gcc/testsuite/ChangeLog:
* c-c++-common/unroll-1.c: Update expected output from "note" to
"optimized".
* c-c++-common/unroll-2.c: Likewise.
* c-c++-common/unroll-3.c: Likewise.
* g++.dg/tree-ssa/dom-invalid.C: Update expected output from
dg-message to dg-missed.  Convert param from -fopt-info to
-fopt-info-missed-ipa.
* g++.dg/tree-ssa/pr81408.C: Update expected output from
dg-message to dg-missed.
* g++.dg/vect/slp-pr56812.cc: Update expected output from
dg-message to dg-optimized.
* gcc.dg/pr26570.c: Update expected output from dg-message to
dg-missed.  Convert param from -fopt-info to
-fopt-info-missed-ipa.
* gcc.dg/pr32773.c: Likewise.
* gcc.dg/tree-ssa/pr19210-1.c: Update expected output from
dg-message to dg-missed.
* gcc.dg/unroll-2.c: Update expected output from dg-message to
dg-optimized.
* gcc.dg/vect/nodump-vect-opt-info-1.c: Likewise.  Convert param
from -fopt-info to -fopt-info-vec.
* gfortran.dg/directive_unroll_1.f90: Update expected output from
"note" to "optimized".
* gfortran.dg/directive_unroll_2.f90: Likewise.
* gfortran.dg/directive_unroll_3.f90: Likewise.
* gnat.dg/unroll4.adb: Likewise.
* lib/gcc-dg.exp (dg-optimized): New procedure.
(dg-missed): New procedure.

From-SVN: r264697
20 files changed:
gcc/ChangeLog
gcc/coverage.c
gcc/dumpfile.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/unroll-1.c
gcc/testsuite/c-c++-common/unroll-2.c
gcc/testsuite/c-c++-common/unroll-3.c
gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C
gcc/testsuite/g++.dg/tree-ssa/pr81408.C
gcc/testsuite/g++.dg/vect/slp-pr56812.cc
gcc/testsuite/gcc.dg/pr26570.c
gcc/testsuite/gcc.dg/pr32773.c
gcc/testsuite/gcc.dg/tree-ssa/pr19210-1.c
gcc/testsuite/gcc.dg/unroll-2.c
gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.c
gcc/testsuite/gfortran.dg/directive_unroll_1.f90
gcc/testsuite/gfortran.dg/directive_unroll_2.f90
gcc/testsuite/gfortran.dg/directive_unroll_3.f90
gcc/testsuite/gnat.dg/unroll4.adb
gcc/testsuite/lib/gcc-dg.exp