diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/coverage.c | 10 | ||||
-rw-r--r-- | gcc/dumpfile.c | 33 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 31 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/unroll-1.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/unroll-2.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/unroll-3.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tree-ssa/pr81408.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/vect/slp-pr56812.cc | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr26570.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr32773.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr19210-1.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/unroll-2.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/directive_unroll_1.f90 | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/directive_unroll_2.f90 | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/directive_unroll_3.f90 | 8 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/unroll4.adb | 2 | ||||
-rw-r--r-- | gcc/testsuite/lib/gcc-dg.exp | 20 |
20 files changed, 136 insertions, 53 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6a68c18..856a72e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2018-09-28 David Malcolm <dmalcolm@redhat.com> + + * 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. + 2018-09-28 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG. diff --git a/gcc/coverage.c b/gcc/coverage.c index 6b45ce9..701460c 100644 --- a/gcc/coverage.c +++ b/gcc/coverage.c @@ -313,7 +313,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, "file %s not found, %s\n", da_file_name, (flag_guess_branch_prob ? "execution counts estimated" @@ -359,7 +359,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"); @@ -367,14 +367,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 b4faeaa..d430ea3 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/ChangeLog b/gcc/testsuite/ChangeLog index ff242d8..2a81011 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,34 @@ +2018-09-28 David Malcolm <dmalcolm@redhat.com> + + * 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. + 2018-09-28 Joseph Myers <joseph@codesourcery.com> PR c/87390 diff --git a/gcc/testsuite/c-c++-common/unroll-1.c b/gcc/testsuite/c-c++-common/unroll-1.c index 105a82c6..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 3c01383..9aed74a 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 -Wno-missing-profile" } +// { dg-options "-Wall -fno-exceptions -O2 -fprofile-use -fopt-info-missed-ipa -fno-rtti -Wno-missing-profile" } 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 007076f..87b644a 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 -Wno-missing-profile" } */ +/* { dg-options "-O2 -fprofile-generate -fprofile-use -fopt-info-missed-ipa -Wno-missing-profile" } */ /* { 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 fe046d9..55b6b1c 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 -Wno-missing-profile" } */ -/* { dg-options "-O -m4 -fprofile-use -fopt-info -Wno-missing-profile" { target sh-*-* } } */ +/* { dg-options "-O -fprofile-use -fopt-info-missed-ipa -Wno-missing-profile" } */ +/* { dg-options "-O -m4 -fprofile-use -fopt-info-missed-ipa -Wno-missing-profile" { 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. # |