aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/input.h2
-rw-r--r--gcc/profile.c9
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/lib/gcov.exp9
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
}