This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Disable early inlining while compiling for coverage (issue5173042)


I have updated PR/45890 with a test case.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45890

In any case, I am attaching a test case here as well.

Sharad

On Sat, Oct 1, 2011 at 10:19 AM, Xinliang David Li <davidxl@google.com> wrote:
>
> On Sat, Oct 1, 2011 at 5:17 AM, Jan Hubicka <hubicka@ucw.cz> wrote:
> >> Yes, this will improve test coverage option's usability, but please
> >> provide the example to explain the issues.
> >>
> >> David
> >>
> >> On Fri, Sep 30, 2011 at 6:12 PM, Sharad Singhai <singhai@google.com> wrote:
> >> > This patch disables early inlining when --coverage option is
> >> > specified. This improves coverage data in presence of other
> >> > optimizations, specially with -O2 where early inlining changes the
> >> > control flow graph sufficiently enough to generate seemingly very odd
> >> > source coverage.
> >
> > BTW early inlining was introduced to make coverage possible on some C++
> > sources, like tramp3d ;)
>
> Early inline can be important for FDO performance reasons -- as inline
> instances get 'context' sensitive profile data.
>
> >However the problem here is that since we moved
> > coverage to SSA, we do it too late. ÂMy longer term plan is to separate
> > coverage and profile feedback passes (so they can't be done both together) and
> > instrument early for coverage & ensure that everything before coverage is done
> > is save WRT line info.
>
> Yes, coverage and FDO are two different animals having different
> requirements -- they happen to share the same instrumentation
> mechanism.
>
> > ÂInlining alone does not mess up the line info, but most
> > optimizations we have in early optimization queue do.
>
> Inlining can do some damage too but to a less extent. For instance,
> the exit block of the callee instance merged with caller's bb causing
> confusion.
>
> >
> > We discussed it back when Richi implemented SSA profiling but we didn't do that
> > basically due to lack of testcases. ÂWould be possible to take one you have
> > and fill in some PRs? Those are regressions WRT pre-SSA profiling releases (I think 4.5?)
>
> Yes.
>
> Sharad, I did not see the test case attached? Please file a bug about
> this. In the meantime, you can checkin the workaround to google
> banches.
>
> thanks,
>
> David
>
> >
> > Honza
> >> >
> >> > Bootstrapped okay and regression tests passed.
> >> >
> >> > Okay for google/gcc-4_6?
> >> >
> >> > 2011-09-30 Â Sharad Singhai Â<singhai@google.com>
> >> >
> >> > Â Â Â Â* gcc.c (cc1_options): Added -fno-early-inlining for coverage.
> >> >
> >> > Index: gcc.c
> >> > ===================================================================
> >> > --- gcc.c    (revision 179402)
> >> > +++ gcc.c    (working copy)
> >> > @@ -776,7 +776,7 @@
> >> > Â%{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\
> >> > Â%{fsyntax-only:-o %j} %{-param*}\
> >> > Â%{fmudflap|fmudflapth:-fno-builtin -fno-merge-constants}\
> >> > - %{coverage:-fprofile-arcs -ftest-coverage}";
> >> > + %{coverage:-fprofile-arcs -ftest-coverage -fno-early-inlining}";
> >> >
> >> > Â/* If an assembler wrapper is used to invoke post-assembly tools
> >> > Â Âlike MAO, --save-temps need to be passed to save the output of
> >> >
> >> > --
> >> > This patch is available for review at http://codereview.appspot.com/5173042
> >> >
> >

Attachment: gcov.tar.gz
Description: GNU Zip compressed data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]