re PR gcov-profile/46266 (gcov generates data for non-existing file <built-in>)
authorMartin Liska <mliska@suse.cz>
Tue, 27 Sep 2016 13:22:04 +0000 (15:22 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Tue, 27 Sep 2016 13:22:04 +0000 (13:22 +0000)
Fix PR gcov-profile/46266

PR gcov-profile/46266
* lib/gcov.exp: Verify that <built-in>.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

gcc/ChangeLog
gcc/input.h
gcc/profile.c
gcc/testsuite/ChangeLog
gcc/testsuite/lib/gcov.exp

index 15346afacb9ebde78f1d6876e1890f99d3fe425f..2fe256cc63caf46c1989ebec4442586c5c93ae03 100644 (file)
@@ -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
index fe80605967e11c2460c189057ae634c8edd42e5a..6ce0b812b5eb6a8e6e0045e9955feab3fc00618a 100644 (file)
@@ -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
index 791225b106d74db34a07cea7bcaca40c0cf36a30..2564f07abf7bd1c4ad70441e445b1b9128530c3b 100644 (file)
@@ -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);
index 8b6c7d6d5036e8bf77ac8e9d1f90f72778adc5e4..5696366367ed4ed9b59af3e45f26f2a8b0291223 100644 (file)
@@ -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
index 02bc6b92c144e809296a1fd6424a477c8acc586f..91f14e2bdc7a27c5351a8c82ff0206489fc9ce54 100644 (file)
@@ -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
     }