From: Martin Liska Date: Tue, 27 Sep 2016 13:22:04 +0000 (+0200) Subject: re PR gcov-profile/46266 (gcov generates data for non-existing file ) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bebe00865b2220d5422a461da9ba00dd996faed6;p=gcc.git re PR gcov-profile/46266 (gcov generates data for non-existing file ) Fix PR gcov-profile/46266 PR gcov-profile/46266 * lib/gcov.exp: Verify that .gcov file is not considered. * input.h (RESERVED_LOCATION_P): New macro. * profile.c (branch_prob): Use RESERVED_LOCATION_P and instread of comparison with UNKNOWN_LOCATION. From-SVN: r240536 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 15346afacb9..2fe256cc63c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-09-27 Martin Liska + + PR gcov-profile/46266 + * input.h (RESERVED_LOCATION_P): New macro. + * profile.c (branch_prob): Use RESERVED_LOCATION_P and + instread of comparison with UNKNOWN_LOCATION. + 2016-09-27 Richard Biener PR tree-optimization/77745 diff --git a/gcc/input.h b/gcc/input.h index fe80605967e..6ce0b812b5e 100644 --- a/gcc/input.h +++ b/gcc/input.h @@ -61,6 +61,8 @@ extern location_t input_location; #define LOCATION_BLOCK(LOC) \ ((tree) ((IS_ADHOC_LOC (LOC)) ? get_data_from_adhoc_loc (line_table, (LOC)) \ : NULL)) +#define RESERVED_LOCATION_P(LOC) \ + (LOCATION_LOCUS (LOC) < RESERVED_LOCATION_COUNT) /* Return a positive value if LOCATION is the locus of a token that is located in a system header, O otherwise. It returns 1 if LOCATION diff --git a/gcc/profile.c b/gcc/profile.c index 791225b106d..2564f07abf7 100644 --- a/gcc/profile.c +++ b/gcc/profile.c @@ -1042,7 +1042,7 @@ branch_prob (void) gsi_prev_nondebug (&gsi)) { last = gsi_stmt (gsi); - if (gimple_has_location (last)) + if (!RESERVED_LOCATION_P (gimple_location (last))) break; } @@ -1053,7 +1053,7 @@ branch_prob (void) is not computed twice. */ if (last && gimple_has_location (last) - && LOCATION_LOCUS (e->goto_locus) != UNKNOWN_LOCATION + && !RESERVED_LOCATION_P (e->goto_locus) && !single_succ_p (bb) && (LOCATION_FILE (e->goto_locus) != LOCATION_FILE (gimple_location (last)) @@ -1262,15 +1262,14 @@ branch_prob (void) for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) { gimple *stmt = gsi_stmt (gsi); - if (gimple_has_location (stmt)) + if (!RESERVED_LOCATION_P (gimple_location (stmt))) output_location (gimple_filename (stmt), gimple_lineno (stmt), &offset, bb); } /* Notice GOTO expressions eliminated while constructing the CFG. */ if (single_succ_p (bb) - && LOCATION_LOCUS (single_succ_edge (bb)->goto_locus) - != UNKNOWN_LOCATION) + && !RESERVED_LOCATION_P (single_succ_edge (bb)->goto_locus)) { expanded_location curr_location = expand_location (single_succ_edge (bb)->goto_locus); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8b6c7d6d503..5696366367e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2016-09-27 Martin Liska + + PR gcov-profile/46266 + * lib/gcov.exp: Verify that .gcov file is not + considered. + 2016-09-27 Richard Biener PR tree-optimization/77745 diff --git a/gcc/testsuite/lib/gcov.exp b/gcc/testsuite/lib/gcov.exp index 02bc6b92c14..91f14e2bdc7 100644 --- a/gcc/testsuite/lib/gcov.exp +++ b/gcc/testsuite/lib/gcov.exp @@ -364,13 +364,20 @@ proc run-gcov { args } { return } + set builtin_index [string first "File ''" $result] + if { $builtin_index != -1 } { + fail "$testname gcov failed: .gcov should not be created" + clean-gcov $testcase + return + } + # Get the gcov output file after making sure it exists. set files [glob -nocomplain $testcase.gcov] if { $files == "" } { if { $xfailed } { setup_xfail "*-*-*" } - fail "$testname gcov failed: $testcase.gov does not exist" + fail "$testname gcov failed: $testcase.gcov does not exist" clean-gcov $testcase return }