diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/input.h | 2 | ||||
-rw-r--r-- | gcc/profile.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/lib/gcov.exp | 9 |
5 files changed, 27 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 15346af..2fe256c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-09-27 Martin Liska <mliska@suse.cz> + + 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 <rguenther@suse.de> PR tree-optimization/77745 diff --git a/gcc/input.h b/gcc/input.h index fe80605..6ce0b81 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 791225b..2564f07 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 8b6c7d6..5696366 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2016-09-27 Martin Liska <mliska@suse.cz> + + PR gcov-profile/46266 + * lib/gcov.exp: Verify that <built-in>.gcov file is not + considered. + 2016-09-27 Richard Biener <rguenther@suse.de> PR tree-optimization/77745 diff --git a/gcc/testsuite/lib/gcov.exp b/gcc/testsuite/lib/gcov.exp index 02bc6b9..91f14e2 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 '<built-in>'" $result] + if { $builtin_index != -1 } { + fail "$testname gcov failed: <built-in>.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 } |