https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93401

--- Comment #13 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jan Hubicka <hubi...@gcc.gnu.org>:

https://gcc.gnu.org/g:44b326839d864fc10c459916abcc97f35a9ac3de

commit r10-7756-g44b326839d864fc10c459916abcc97f35a9ac3de
Author: Jan Hubicka <j...@suse.cz>
Date:   Thu Apr 16 14:25:51 2020 +0200

    Make it possible to have different instrumented and feedback builds without
copying gcda files around [pr93401]

    Hi,
    in GCC 8 we changed -fprofile-generate=<path> to use mangled absolute paths
in
    the <path> directory. This was necessary to avoid clashes of files when gcc
is
    executed from different directories to build different sources of same
    filename.

    However this made it difficult to build projects on setups where
instrumented
    build is done in one directory, feedback build in different and possibly
    training happens in yet another directory structure.  This happens i.e. for
    Firefox builds for month or two.

    This patch adds -fprofile-prefix-path that can be used to inform gcc where
the
    root of build directory is and strip it form the gcda filenames.
    This is similar to exisitng debug-prefix-map but without the map feature
since
    it seems useless for profile data.

    We spent quite some time with Maritn Liska discussing options and found no
    better solution.  I was looking how this work on LLVM and they produce
single
    profdata file which is then transformed into kind of simple database by
    llvmprofdata tool.  This database keys functions by filename and symbol
name.
    If you arrane two files with same name define static variable with same
symbol
    name this gets messedup and result in wrong info. So I think this is not
very
    good solution and preffer the extra option.

    Bootstrapped/regtested x86_64-linux. I plan to commit it later today if
there
    are no complains.

    I suppose our manual could have some central section on profile feedback
    explaining the whole setup at one place.

    Honza

            PR gcov-profile/93401
            * common.opt (profile-prefix-path): New option.
            * coverae.c: Include diagnostics.h.
            (coverage_init): Strip profile prefix path.
            * doc/invoke.texi (-fprofile-prefix-path): Document.

Reply via email to