Message ID | 26b657ee-eb87-d42d-e754-9ab96ce6d267@suse.cz |
---|---|
State | New |
Headers | show |
On 09/27/16 08:46, Martin Liška wrote: >> Second version of the patch adds validation to gcov.exp, where $result is scanned for "File '<built-in>'". >> Luckily current test-case hit that verification: >> >> FAIL: gcc.misc-tests/gcov-6.c gcov failed: <built-in>.gcov should not be created >> FAIL: gcc.misc-tests/gcov-7.c gcov failed: <built-in>.gcov should not be created thanks. >>> One thing I dislike is negated predicates though -- I think I'd find >>> if (!gimple_has_reserved_location (gs)) >>> to be more understandable (particularly as that matches the sense of RESERVED_LOCATION_P. >> >> Agree with you, renamed to gimple_has_reserved_location. >> Ready with that change? > Adding missing patch. I think this needs Richard's approval for the gimple predicates etc. But OK for me. nathan
On Tue, Sep 27, 2016 at 2:57 PM, Nathan Sidwell <nathan@acm.org> wrote: > On 09/27/16 08:46, Martin Liška wrote: > >>> Second version of the patch adds validation to gcov.exp, where $result is >>> scanned for "File '<built-in>'". >>> Luckily current test-case hit that verification: >>> >>> FAIL: gcc.misc-tests/gcov-6.c gcov failed: <built-in>.gcov should not be >>> created >>> FAIL: gcc.misc-tests/gcov-7.c gcov failed: <built-in>.gcov should not be >>> created > > > thanks. > >>>> One thing I dislike is negated predicates though -- I think I'd find >>>> if (!gimple_has_reserved_location (gs)) >>>> to be more understandable (particularly as that matches the sense of >>>> RESERVED_LOCATION_P. >>> >>> >>> Agree with you, renamed to gimple_has_reserved_location. >>> Ready with that change? > > >> Adding missing patch. > > > I think this needs Richard's approval for the gimple predicates etc. But OK > for me. Sorry for not chiming in earlier but I'd rather have you use if (RESERVED_LOCATION_P (gimple_location (...))) and not add the gimple_has_not_reserved_location wrapper. That's more in line with the other uses you have. Ok with that change (well, adding the RESERVED_LOCATION_P macro is ok). Richard. > nathan
On 09/27/2016 03:05 PM, Richard Biener wrote: > On Tue, Sep 27, 2016 at 2:57 PM, Nathan Sidwell <nathan@acm.org> wrote: >> On 09/27/16 08:46, Martin Liška wrote: >> >>>> Second version of the patch adds validation to gcov.exp, where $result is >>>> scanned for "File '<built-in>'". >>>> Luckily current test-case hit that verification: >>>> >>>> FAIL: gcc.misc-tests/gcov-6.c gcov failed: <built-in>.gcov should not be >>>> created >>>> FAIL: gcc.misc-tests/gcov-7.c gcov failed: <built-in>.gcov should not be >>>> created >> >> >> thanks. >> >>>>> One thing I dislike is negated predicates though -- I think I'd find >>>>> if (!gimple_has_reserved_location (gs)) >>>>> to be more understandable (particularly as that matches the sense of >>>>> RESERVED_LOCATION_P. >>>> >>>> >>>> Agree with you, renamed to gimple_has_reserved_location. >>>> Ready with that change? >> >> >>> Adding missing patch. >> >> >> I think this needs Richard's approval for the gimple predicates etc. But OK >> for me. > > Sorry for not chiming in earlier but I'd rather have you use > > if (RESERVED_LOCATION_P (gimple_location (...))) > > and not add the gimple_has_not_reserved_location wrapper. That's more in line > with the other uses you have. > > Ok with that change (well, adding the RESERVED_LOCATION_P macro is ok). > > Richard. Done that in r240536. Thanks for the review. Martin > >> nathan
From a456386416c0d4d5a6acd8755ff81c601af01c9c Mon Sep 17 00:00:00 2001 From: marxin <mliska@suse.cz> Date: Mon, 8 Aug 2016 17:38:07 +0200 Subject: [PATCH] Fix PR gcov-profile/46266 gcc/testsuite/ChangeLog: 2016-09-27 Martin Liska <mliska@suse.cz> * lib/gcov.exp: Verify that <built-in>.gcov file is not considered. gcc/ChangeLog: 2016-09-27 Martin Liska <mliska@suse.cz> * gimple.h (gimple_has_reserved_location): New function. * input.h (RESERVED_LOCATION_P): New macro. * profile.c (branch_prob): Use RESERVED_LOCATION_P and gimple_has_reserved_location instread of comparison with UNKNOWN_LOCATION. --- gcc/gimple.h | 8 ++++++++ gcc/input.h | 2 ++ gcc/profile.c | 9 ++++----- gcc/testsuite/lib/gcov.exp | 9 ++++++++- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/gcc/gimple.h b/gcc/gimple.h index 9fad15b..f6dab77 100644 --- a/gcc/gimple.h +++ b/gcc/gimple.h @@ -1792,6 +1792,14 @@ gimple_has_location (const gimple *g) return LOCATION_LOCUS (gimple_location (g)) != UNKNOWN_LOCATION; } +/* Return true if G has a location that is any from reserved. */ + +static inline bool +gimple_has_reserved_location (const gimple *g) +{ + return RESERVED_LOCATION_P (gimple_location (g)); +} + /* Return the file name of the location of STMT. */ 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..3c00077 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 (!gimple_has_reserved_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 (!gimple_has_reserved_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/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 } -- 2.9.2