public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Richard Biener <richard.guenther@gmail.com>
To: David Malcolm <dmalcolm@redhat.com>
Cc: GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH] dumpfile.c: use prefixes other that 'note: ' for MSG_{OPTIMIZED_LOCATIONS|MISSED_OPTIMIZATION}
Date: Fri, 28 Sep 2018 09:44:00 -0000	[thread overview]
Message-ID: <CAFiYyc3-1Gvyw2Y0rPVYVWNXOmkV2aFO7psBveLfq=c6pWeoOg@mail.gmail.com> (raw)
In-Reply-To: <1537905614-44303-1-git-send-email-dmalcolm@redhat.com>

On Tue, Sep 25, 2018 at 9:12 PM David Malcolm <dmalcolm@redhat.com> wrote:
>
> 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".
>
> Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.
>
> OK for trunk?

OK.

Richard.

> 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.
> ---
>  gcc/coverage.c                                     | 10 +++----
>  gcc/dumpfile.c                                     | 33 ++++++++++++++++++----
>  gcc/testsuite/c-c++-common/unroll-1.c              |  8 +++---
>  gcc/testsuite/c-c++-common/unroll-2.c              |  8 +++---
>  gcc/testsuite/c-c++-common/unroll-3.c              | 12 ++++----
>  gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C        |  4 +--
>  gcc/testsuite/g++.dg/tree-ssa/pr81408.C            |  2 +-
>  gcc/testsuite/g++.dg/vect/slp-pr56812.cc           |  2 +-
>  gcc/testsuite/gcc.dg/pr26570.c                     |  4 +--
>  gcc/testsuite/gcc.dg/pr32773.c                     |  6 ++--
>  gcc/testsuite/gcc.dg/tree-ssa/pr19210-1.c          |  8 +++---
>  gcc/testsuite/gcc.dg/unroll-2.c                    |  4 +--
>  gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.c |  6 ++--
>  gcc/testsuite/gfortran.dg/directive_unroll_1.f90   |  6 ++--
>  gcc/testsuite/gfortran.dg/directive_unroll_2.f90   |  6 ++--
>  gcc/testsuite/gfortran.dg/directive_unroll_3.f90   |  8 +++---
>  gcc/testsuite/gnat.dg/unroll4.adb                  |  2 +-
>  gcc/testsuite/lib/gcc-dg.exp                       | 20 +++++++++++++
>  18 files changed, 96 insertions(+), 53 deletions(-)
>
> diff --git a/gcc/coverage.c b/gcc/coverage.c
> index 8f12778..2475495 100644
> --- a/gcc/coverage.c
> +++ b/gcc/coverage.c
> @@ -308,7 +308,7 @@ get_coverage_counts (unsigned counter, unsigned cfg_checksum,
>         {
>           dump_user_location_t loc
>             = dump_user_location_t::from_location_t (input_location);
> -         dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, loc,
> +         dump_printf_loc (MSG_MISSED_OPTIMIZATION, loc,
>                            (flag_guess_branch_prob
>                             ? "file %s not found, execution counts estimated\n"
>                             : "file %s not found, execution counts assumed to "
> @@ -347,7 +347,7 @@ get_coverage_counts (unsigned counter, unsigned cfg_checksum,
>         {
>           dump_user_location_t loc
>             = dump_user_location_t::from_location_t (input_location);
> -          dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, loc,
> +          dump_printf_loc (MSG_MISSED_OPTIMIZATION, loc,
>                             "use -Wno-error=coverage-mismatch to tolerate "
>                             "the mismatch but performance may drop if the "
>                             "function is hot\n");
> @@ -355,14 +355,14 @@ get_coverage_counts (unsigned counter, unsigned cfg_checksum,
>           if (!seen_error ()
>               && !warned++)
>             {
> -             dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, loc,
> +             dump_printf_loc (MSG_MISSED_OPTIMIZATION, loc,
>                                 "coverage mismatch ignored\n");
> -             dump_printf (MSG_OPTIMIZED_LOCATIONS,
> +             dump_printf (MSG_MISSED_OPTIMIZATION,
>                             flag_guess_branch_prob
>                             ? G_("execution counts estimated\n")
>                             : G_("execution counts assumed to be zero\n"));
>               if (!flag_guess_branch_prob)
> -               dump_printf (MSG_OPTIMIZED_LOCATIONS,
> +               dump_printf (MSG_MISSED_OPTIMIZATION,
>                               "this can result in poorly optimized code\n");
>             }
>         }
> diff --git a/gcc/dumpfile.c b/gcc/dumpfile.c
> index 5655e46..db260a5 100644
> --- a/gcc/dumpfile.c
> +++ b/gcc/dumpfile.c
> @@ -437,6 +437,27 @@ dump_user_location_t::from_function_decl (tree fndecl)
>                                DECL_SOURCE_LOCATION (fndecl));
>  }
>
> +/* Extract the MSG_* component from DUMP_KIND and return a string for use
> +   as a prefix to dump messages.
> +   These match the strings in optinfo_verbosity_options and thus the
> +   "OPTIONS" within "-fopt-info-OPTIONS".  */
> +
> +static const char *
> +kind_as_string (dump_flags_t dump_kind)
> +{
> +  switch (dump_kind & MSG_ALL)
> +    {
> +    default:
> +      gcc_unreachable ();
> +    case MSG_OPTIMIZED_LOCATIONS:
> +      return "optimized";
> +    case MSG_MISSED_OPTIMIZATION:
> +      return "missed";
> +    case MSG_NOTE:
> +      return "note";
> +    }
> +}
> +
>  /* Print source location on DFILE if enabled.  */
>
>  static void
> @@ -445,13 +466,14 @@ dump_loc (dump_flags_t dump_kind, FILE *dfile, source_location loc)
>    if (dump_kind)
>      {
>        if (LOCATION_LOCUS (loc) > BUILTINS_LOCATION)
> -        fprintf (dfile, "%s:%d:%d: note: ", LOCATION_FILE (loc),
> +        fprintf (dfile, "%s:%d:%d: ", LOCATION_FILE (loc),
>                   LOCATION_LINE (loc), LOCATION_COLUMN (loc));
>        else if (current_function_decl)
> -        fprintf (dfile, "%s:%d:%d: note: ",
> +        fprintf (dfile, "%s:%d:%d: ",
>                   DECL_SOURCE_FILE (current_function_decl),
>                   DECL_SOURCE_LINE (current_function_decl),
>                   DECL_SOURCE_COLUMN (current_function_decl));
> +      fprintf (dfile, "%s: ", kind_as_string (dump_kind));
>        /* Indentation based on scope depth.  */
>        fprintf (dfile, "%*s", get_dump_scope_depth (), "");
>      }
> @@ -465,13 +487,14 @@ dump_loc (dump_flags_t dump_kind, pretty_printer *pp, source_location loc)
>    if (dump_kind)
>      {
>        if (LOCATION_LOCUS (loc) > BUILTINS_LOCATION)
> -       pp_printf (pp, "%s:%d:%d: note: ", LOCATION_FILE (loc),
> +       pp_printf (pp, "%s:%d:%d: ", LOCATION_FILE (loc),
>                    LOCATION_LINE (loc), LOCATION_COLUMN (loc));
>        else if (current_function_decl)
> -       pp_printf (pp, "%s:%d:%d: note: ",
> +       pp_printf (pp, "%s:%d:%d: ",
>                    DECL_SOURCE_FILE (current_function_decl),
>                    DECL_SOURCE_LINE (current_function_decl),
>                    DECL_SOURCE_COLUMN (current_function_decl));
> +      pp_printf (pp, "%s: ", kind_as_string (dump_kind));
>        /* Indentation based on scope depth.  */
>        for (unsigned i = 0; i < get_dump_scope_depth (); i++)
>         pp_character (pp, ' ');
> @@ -2325,7 +2348,7 @@ test_capture_of_dump_calls (const line_table_case &case_)
>      }
>      dump_printf_loc (MSG_NOTE, stmt, "msg 7\n");
>
> -    ASSERT_DUMPED_TEXT_EQ (tmp, "test.txt:5:10: note:    msg 4\n");
> +    ASSERT_DUMPED_TEXT_EQ (tmp, "test.txt:5:10: optimized:    msg 4\n");
>    }
>  }
>
> diff --git a/gcc/testsuite/c-c++-common/unroll-1.c b/gcc/testsuite/c-c++-common/unroll-1.c
> index 105a82c..fe7f4f3 100644
> --- a/gcc/testsuite/c-c++-common/unroll-1.c
> +++ b/gcc/testsuite/c-c++-common/unroll-1.c
> @@ -20,22 +20,22 @@ void test (void)
>    #pragma GCC unroll 8
>    for (unsigned long i = 1; i <= 15; ++i)
>      bar(i);
> -  /* { dg-final { scan-rtl-dump "21:.*: note: loop unrolled 7 times" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump "21:.*: optimized: loop unrolled 7 times" "loop2_unroll" } } */
>
>    #pragma GCC unroll 8
>    for (unsigned long i = 1; i <= j; ++i)
>      bar(i);
> -  /* { dg-final { scan-rtl-dump "26:.*: note: loop unrolled 7 times" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump "26:.*: optimized: loop unrolled 7 times" "loop2_unroll" } } */
>
>    #pragma GCC unroll 7
>    for (unsigned long i = 1; i <= j; ++i)
>      bar(i);
> -  /* { dg-final { scan-rtl-dump "31:.*: note: loop unrolled 3 times" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump "31:.*: optimized: loop unrolled 3 times" "loop2_unroll" } } */
>
>    unsigned long i = 0;
>    #pragma GCC unroll 3
>    do {
>      bar(i);
>    } while (++i < 9);
> -  /* { dg-final { scan-rtl-dump "3\[79\]:.*: note: loop unrolled 2 times" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump "3\[79\]:.*: optimized: loop unrolled 2 times" "loop2_unroll" } } */
>  }
> diff --git a/gcc/testsuite/c-c++-common/unroll-2.c b/gcc/testsuite/c-c++-common/unroll-2.c
> index a67a1d7..0bb4bbb 100644
> --- a/gcc/testsuite/c-c++-common/unroll-2.c
> +++ b/gcc/testsuite/c-c++-common/unroll-2.c
> @@ -20,22 +20,22 @@ void test (void)
>    #pragma GCC unroll 8
>    for (unsigned long i = 1; i <= 15; ++i)
>      bar(i);
> -  /* { dg-final { scan-rtl-dump "21:.*: note: loop unrolled 7 times" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump "21:.*: optimized: loop unrolled 7 times" "loop2_unroll" } } */
>
>    #pragma GCC unroll 8
>    for (unsigned long i = 1; i <= j; ++i)
>      bar(i);
> -  /* { dg-final { scan-rtl-dump "26:.*: note: loop unrolled 7 times" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump "26:.*: optimized: loop unrolled 7 times" "loop2_unroll" } } */
>
>    #pragma GCC unroll 7
>    for (unsigned long i = 1; i <= j; ++i)
>      bar(i);
> -  /* { dg-final { scan-rtl-dump "31:.*: note: loop unrolled 3 times" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump "31:.*: optimized: loop unrolled 3 times" "loop2_unroll" } } */
>
>    unsigned long i = 0;
>    #pragma GCC unroll 3
>    do {
>      bar(i);
>    } while (++i < 9);
> -  /* { dg-final { scan-rtl-dump "3\[79\]:.*: note: loop unrolled 2 times" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump "3\[79\]:.*: optimized: loop unrolled 2 times" "loop2_unroll" } } */
>  }
> diff --git a/gcc/testsuite/c-c++-common/unroll-3.c b/gcc/testsuite/c-c++-common/unroll-3.c
> index 6cefa75..541accb 100644
> --- a/gcc/testsuite/c-c++-common/unroll-3.c
> +++ b/gcc/testsuite/c-c++-common/unroll-3.c
> @@ -10,32 +10,32 @@ void test (void)
>    #pragma GCC unroll 8
>    for (unsigned long i = 1; i <= 8; ++i)
>      bar(i);
> -  /* { dg-final { scan-rtl-dump-not "11:.*: note: loop unrolled" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump-not "11:.*: optimized: loop unrolled" "loop2_unroll" } } */
>
>    #pragma GCC unroll 8
>    for (unsigned long i = 1; i <= 7; ++i)
>      bar(i);
> -  /* { dg-final { scan-rtl-dump-not "16:.*: note: loop unrolled" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump-not "16:.*: optimized: loop unrolled" "loop2_unroll" } } */
>
>    #pragma GCC unroll 8
>    for (unsigned long i = 1; i <= 15; ++i)
>      bar(i);
> -  /* { dg-final { scan-rtl-dump "21:.*: note: loop unrolled 7 times" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump "21:.*: optimized: loop unrolled 7 times" "loop2_unroll" } } */
>
>    #pragma GCC unroll 8
>    for (unsigned long i = 1; i <= j; ++i)
>      bar(i);
> -  /* { dg-final { scan-rtl-dump "26:.*: note: loop unrolled 7 times" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump "26:.*: optimized: loop unrolled 7 times" "loop2_unroll" } } */
>
>    #pragma GCC unroll 7
>    for (unsigned long i = 1; i <= j; ++i)
>      bar(i);
> -  /* { dg-final { scan-rtl-dump "31:.*: note: loop unrolled 3 times" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump "31:.*: optimized: loop unrolled 3 times" "loop2_unroll" } } */
>
>    unsigned long i = 0;
>    #pragma GCC unroll 3
>    do {
>      bar(i);
>    } while (++i < 9);
> -  /* { dg-final { scan-rtl-dump "3\[79\]:.*: note: loop unrolled 2 times" "loop2_unroll" } } */
> +  /* { dg-final { scan-rtl-dump "3\[79\]:.*: optimized: loop unrolled 2 times" "loop2_unroll" } } */
>  }
> diff --git a/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C b/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C
> index 41343ee..056d6ed 100644
> --- a/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C
> +++ b/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C
> @@ -1,7 +1,7 @@
>  // PR tree-optimization/39557
>  // invalid post-dom info leads to infinite loop
>  // { dg-do run }
> -// { dg-options "-Wall -fno-exceptions -O2 -fprofile-use -fopt-info -fno-rtti" }
> +// { dg-options "-Wall -fno-exceptions -O2 -fprofile-use -fopt-info-missed-ipa -fno-rtti" }
>
>  struct C
>  {
> @@ -49,4 +49,4 @@ main ()
>  {
>   E e;
>   e.bar ();
> -} // { dg-message  "note: file" }
> +} // { dg-missed "file .* not found" }
> diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr81408.C b/gcc/testsuite/g++.dg/tree-ssa/pr81408.C
> index 89d6e55..39e32fd 100644
> --- a/gcc/testsuite/g++.dg/tree-ssa/pr81408.C
> +++ b/gcc/testsuite/g++.dg/tree-ssa/pr81408.C
> @@ -86,7 +86,7 @@ a::H t;
>  void
>  ShowHelpListCommands ()
>  {
> -  for (auto c : t) /* { dg-message "note: missed loop optimization: niters analysis .*" } */
> +  for (auto c : t) /* { dg-missed "missed loop optimization: niters analysis .*" } */
>      a::ax << c.ay << a::av;
>  }
>
> diff --git a/gcc/testsuite/g++.dg/vect/slp-pr56812.cc b/gcc/testsuite/g++.dg/vect/slp-pr56812.cc
> index 08b0981..3e7a495 100644
> --- a/gcc/testsuite/g++.dg/vect/slp-pr56812.cc
> +++ b/gcc/testsuite/g++.dg/vect/slp-pr56812.cc
> @@ -14,6 +14,6 @@ public:
>  void mydata::Set (float x)
>  {
>    /* We want to vectorize this either as loop or basic-block.  */
> -  for (int i=0; i<upper(); i++) /* { dg-message "note: \[^\n\]* vectorized" } */
> +  for (int i=0; i<upper(); i++) /* { dg-optimized "\[^\n\]* vectorized" } */
>      data[i] = x;
>  }
> diff --git a/gcc/testsuite/gcc.dg/pr26570.c b/gcc/testsuite/gcc.dg/pr26570.c
> index 8ce8a44..e267055 100644
> --- a/gcc/testsuite/gcc.dg/pr26570.c
> +++ b/gcc/testsuite/gcc.dg/pr26570.c
> @@ -1,8 +1,8 @@
>  /* { dg-do compile } */
> -/* { dg-options "-O2 -fprofile-generate -fprofile-use -fopt-info" } */
> +/* { dg-options "-O2 -fprofile-generate -fprofile-use -fopt-info-missed-ipa" } */
>  /* { dg-require-profiling "-fprofile-generate" } */
>
>  unsigned test (unsigned a, unsigned b)
>  {
>    return a / b;
> -} /* { dg-message "note: \[^\n\]*execution counts estimated" } */
> +} /* { dg-missed "\[^\n\]*execution counts estimated" } */
> diff --git a/gcc/testsuite/gcc.dg/pr32773.c b/gcc/testsuite/gcc.dg/pr32773.c
> index 19a9019..edfcb3a 100644
> --- a/gcc/testsuite/gcc.dg/pr32773.c
> +++ b/gcc/testsuite/gcc.dg/pr32773.c
> @@ -1,9 +1,9 @@
>  /* { dg-do compile } */
> -/* { dg-options "-O -fprofile-use -fopt-info" } */
> -/* { dg-options "-O -m4 -fprofile-use -fopt-info" { target sh-*-* } } */
> +/* { dg-options "-O -fprofile-use -fopt-info-missed-ipa" } */
> +/* { dg-options "-O -m4 -fprofile-use -fopt-info-missed-ipa" { target sh-*-* } } */
>
>  void foo (int *p)
>  {
>    if (p)
>      *p = 0;
> -} /* { dg-message "note: \[^\n\]*execution counts estimated" } */
> +} /* { dg-missed "\[^\n\]*execution counts estimated" } */
> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr19210-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr19210-1.c
> index 9162d15..50d86a0 100644
> --- a/gcc/testsuite/gcc.dg/tree-ssa/pr19210-1.c
> +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr19210-1.c
> @@ -6,10 +6,10 @@ void
>  f (unsigned n)
>  {
>    unsigned k;
> -  for(k = 0;k <= n;k++) /* { dg-message "note: missed loop optimization: niters analysis .*" } */
> +  for(k = 0;k <= n;k++) /* { dg-missed "missed loop optimization: niters analysis .*" } */
>      g();
>
> -  for(k = 0;k <= n;k += 4) /* { dg-message "note: missed loop optimization: niters analysis .*" } */
> +  for(k = 0;k <= n;k += 4) /* { dg-missed "missed loop optimization: niters analysis .*" } */
>      g();
>
>    /* We used to get warning for this loop.  However, since then # of iterations
> @@ -21,9 +21,9 @@ f (unsigned n)
>      g();
>
>    /* So we need the following loop, instead.  */
> -  for(k = 4;k <= n;k += 5) /* { dg-message "note: missed loop optimization: niters analysis .*" } */
> +  for(k = 4;k <= n;k += 5) /* { dg-missed "missed loop optimization: niters analysis .*" } */
>      g();
>
> -  for(k = 15;k >= n;k--) /* { dg-message "note: missed loop optimization: niters analysis .*" } */
> +  for(k = 15;k >= n;k--) /* { dg-missed "missed loop optimization: niters analysis .*" } */
>      g();
>  }
> diff --git a/gcc/testsuite/gcc.dg/unroll-2.c b/gcc/testsuite/gcc.dg/unroll-2.c
> index 46126c3..8baceaa 100644
> --- a/gcc/testsuite/gcc.dg/unroll-2.c
> +++ b/gcc/testsuite/gcc.dg/unroll-2.c
> @@ -15,7 +15,7 @@ int foo(void)
>  {
>    int i;
>    bar();
> -  for (i = 0; i < 2; i++) /* { dg-message "note: loop with 2 iterations completely unrolled" } */
> +  for (i = 0; i < 2; i++) /* { dg-optimized "loop with 2 iterations completely unrolled" } */
>    {
>       a[i]= b[i] + 1;
>    }
> @@ -25,7 +25,7 @@ int foo(void)
>  int foo2(void)
>  {
>    int i;
> -  for (i = 0; i < 2; i++) /* { dg-message "note: loop with 2 iterations completely unrolled" } */
> +  for (i = 0; i < 2; i++) /* { dg-optimized "loop with 2 iterations completely unrolled" } */
>    {
>       a[i]= b[i] + 1;
>    }
> diff --git a/gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.c b/gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.c
> index 0b14b8e..258e378 100644
> --- a/gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.c
> +++ b/gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.c
> @@ -1,11 +1,11 @@
>  /* { dg-do compile { target vect_int } } */
> -/* { dg-additional-options "-std=c99 -fopt-info -O3" } */
> +/* { dg-additional-options "-std=c99 -fopt-info-vec -O3" } */
>
>  void
>  vadd (int *dst, int *op1, int *op2, int count)
>  {
> -/* { dg-message "loop vectorized" "" { target *-*-* } .+2 } */
> -/* { dg-message "loop versioned for vectorization because of possible aliasing" "" { target *-*-* } .+1 } */
> +/* { dg-optimized "loop vectorized" "" { target *-*-* } .+2 } */
> +/* { dg-optimized "loop versioned for vectorization because of possible aliasing" "" { target *-*-* } .+1 } */
>    for (int i = 0; i < count; ++i)
>      dst[i] = op1[i] + op2[i];
>  }
> diff --git a/gcc/testsuite/gfortran.dg/directive_unroll_1.f90 b/gcc/testsuite/gfortran.dg/directive_unroll_1.f90
> index 85b3671..d758ad7 100644
> --- a/gcc/testsuite/gfortran.dg/directive_unroll_1.f90
> +++ b/gcc/testsuite/gfortran.dg/directive_unroll_1.f90
> @@ -24,7 +24,7 @@ subroutine test2(a, n)
>    DO i=1, n, 1
>      call dummy(a(i))
>    ENDDO
> -! { dg-final { scan-rtl-dump "24:.: note: loop unrolled 7 times" "loop2_unroll" } }
> +! { dg-final { scan-rtl-dump "24:.: optimized: loop unrolled 7 times" "loop2_unroll" } }
>  end subroutine test2
>
>  subroutine test3(a, n)
> @@ -36,7 +36,7 @@ subroutine test3(a, n)
>    DO i=n, 1, -1
>      call dummy(a(i))
>    ENDDO
> -! { dg-final { scan-rtl-dump "36:.: note: loop unrolled 7 times" "loop2_unroll" } }
> +! { dg-final { scan-rtl-dump "36:.: optimized: loop unrolled 7 times" "loop2_unroll" } }
>  end subroutine test3
>
>  subroutine test4(a, n)
> @@ -48,5 +48,5 @@ subroutine test4(a, n)
>    DO i=1, n, 2
>      call dummy(a(i))
>    ENDDO
> -! { dg-final { scan-rtl-dump "48:.: note: loop unrolled 7 times" "loop2_unroll" } }
> +! { dg-final { scan-rtl-dump "48:.: optimized: loop unrolled 7 times" "loop2_unroll" } }
>  end subroutine test4
> diff --git a/gcc/testsuite/gfortran.dg/directive_unroll_2.f90 b/gcc/testsuite/gfortran.dg/directive_unroll_2.f90
> index 6dff8fa..c726227 100644
> --- a/gcc/testsuite/gfortran.dg/directive_unroll_2.f90
> +++ b/gcc/testsuite/gfortran.dg/directive_unroll_2.f90
> @@ -24,7 +24,7 @@ subroutine test2(a, n)
>    DO i=1, n, 1
>      call dummy(a(i))
>    ENDDO
> -! { dg-final { scan-rtl-dump "24:.: note: loop unrolled 7 times" "loop2_unroll" } }
> +! { dg-final { scan-rtl-dump "24:.: optimized: loop unrolled 7 times" "loop2_unroll" } }
>  end subroutine test2
>
>  subroutine test3(a, n)
> @@ -36,7 +36,7 @@ subroutine test3(a, n)
>    DO i=n, 1, -1
>      call dummy(a(i))
>    ENDDO
> -! { dg-final { scan-rtl-dump "36:.: note: loop unrolled 7 times" "loop2_unroll" } }
> +! { dg-final { scan-rtl-dump "36:.: optimized: loop unrolled 7 times" "loop2_unroll" } }
>  end subroutine test3
>
>  subroutine test4(a, n)
> @@ -48,5 +48,5 @@ subroutine test4(a, n)
>    DO i=1, n, 2
>      call dummy(a(i))
>    ENDDO
> -! { dg-final { scan-rtl-dump "48:.: note: loop unrolled 7 times" "loop2_unroll" } }
> +! { dg-final { scan-rtl-dump "48:.: optimized: loop unrolled 7 times" "loop2_unroll" } }
>  end subroutine test4
> diff --git a/gcc/testsuite/gfortran.dg/directive_unroll_3.f90 b/gcc/testsuite/gfortran.dg/directive_unroll_3.f90
> index 4e3ec09..59a8e02 100644
> --- a/gcc/testsuite/gfortran.dg/directive_unroll_3.f90
> +++ b/gcc/testsuite/gfortran.dg/directive_unroll_3.f90
> @@ -12,7 +12,7 @@ subroutine test1(a)
>    DO i=1, 8, 1
>      call dummy(a(i))
>    ENDDO
> -! { dg-final { scan-rtl-dump-not "12:.: note: loop unrolled" "loop2_unroll" } }
> +! { dg-final { scan-rtl-dump-not "12:.: optimized: loop unrolled" "loop2_unroll" } }
>  end subroutine test1
>
>  subroutine test2(a, n)
> @@ -24,7 +24,7 @@ subroutine test2(a, n)
>    DO i=1, n, 1
>      call dummy(a(i))
>    ENDDO
> -! { dg-final { scan-rtl-dump "24:.: note: loop unrolled 7 times" "loop2_unroll" } }
> +! { dg-final { scan-rtl-dump "24:.: optimized: loop unrolled 7 times" "loop2_unroll" } }
>  end subroutine test2
>
>  subroutine test3(a, n)
> @@ -36,7 +36,7 @@ subroutine test3(a, n)
>    DO i=n, 1, -1
>      call dummy(a(i))
>    ENDDO
> -! { dg-final { scan-rtl-dump "36:.: note: loop unrolled 7 times" "loop2_unroll" } }
> +! { dg-final { scan-rtl-dump "36:.: optimized: loop unrolled 7 times" "loop2_unroll" } }
>  end subroutine test3
>
>  subroutine test4(a, n)
> @@ -48,5 +48,5 @@ subroutine test4(a, n)
>    DO i=1, n, 2
>      call dummy(a(i))
>    ENDDO
> -! { dg-final { scan-rtl-dump "48:.: note: loop unrolled 7 times" "loop2_unroll" } }
> +! { dg-final { scan-rtl-dump "48:.: optimized: loop unrolled 7 times" "loop2_unroll" } }
>  end subroutine test4
> diff --git a/gcc/testsuite/gnat.dg/unroll4.adb b/gcc/testsuite/gnat.dg/unroll4.adb
> index d9b763a..0cea4e8 100644
> --- a/gcc/testsuite/gnat.dg/unroll4.adb
> +++ b/gcc/testsuite/gnat.dg/unroll4.adb
> @@ -23,4 +23,4 @@ package body Unroll4 is
>
>  end Unroll4;
>
> --- { dg-final { scan-rtl-dump-times "note: loop unrolled 7 times" 2 "loop2_unroll" } }
> +-- { dg-final { scan-rtl-dump-times "optimized: loop unrolled 7 times" 2 "loop2_unroll" } }
> diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
> index 24d0b00..c33a50c 100644
> --- a/gcc/testsuite/lib/gcc-dg.exp
> +++ b/gcc/testsuite/lib/gcc-dg.exp
> @@ -1194,6 +1194,26 @@ proc dg-locus { args } {
>      verbose "process-message:\n${dg-messages}" 2
>  }
>
> +# Handle output from -fopt-info for MSG_OPTIMIZED_LOCATIONS:
> +# a successful optimization.
> +
> +proc dg-optimized { args } {
> +    # Make this variable available here and to the saved proc.
> +    upvar dg-messages dg-messages
> +
> +    process-message saved-dg-error "optimized: " "$args"
> +}
> +
> +# Handle output from -fopt-info for MSG_MISSED_OPTIMIZATION:
> +# a missed optimization.
> +
> +proc dg-missed { args } {
> +    # Make this variable available here and to the saved proc.
> +    upvar dg-messages dg-messages
> +
> +    process-message saved-dg-error "missed: " "$args"
> +}
> +
>  # Check the existence of a gdb in the path, and return true if there
>  # is one.
>  #
> --
> 1.8.5.3
>

  reply	other threads:[~2018-09-28  9:11 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-25 21:55 David Malcolm
2018-09-28  9:44 ` Richard Biener [this message]
2018-09-29 23:06 ` Andreas Schwab
2018-10-01 14:20   ` David Malcolm
2018-10-01 14:29     ` Andreas Schwab
2018-10-04 11:34       ` Rainer Orth
2018-12-05 13:57         ` Rainer Orth
2020-11-06  8:38 ` Thomas Schwinge
2020-11-13 22:06   ` Jeff Law
2020-11-24  9:46     ` Thomas Schwinge
2020-11-06  8:50 ` Thomas Schwinge
2020-11-13 22:06   ` Jeff Law
2020-11-24  9:51     ` Thomas Schwinge
2020-11-06  9:26 ` Add 'dg-note' next to 'dg-optimized', 'dg-missed' (was: [PATCH] dumpfile.c: use prefixes other that 'note: ' for MSG_{OPTIMIZED_LOCATIONS|MISSED_OPTIMIZATION}) Thomas Schwinge
2020-11-24  9:53   ` Thomas Schwinge
2020-11-30 19:28     ` Jeff Law
2021-05-18 10:46       ` Add 'dg-note', 'dg-lto-note' (was: Add 'dg-note' next to 'dg-optimized', 'dg-missed') Thomas Schwinge

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAFiYyc3-1Gvyw2Y0rPVYVWNXOmkV2aFO7psBveLfq=c6pWeoOg@mail.gmail.com' \
    --to=richard.guenther@gmail.com \
    --cc=dmalcolm@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).