On 08/16/16 08:55, Martin Liška wrote:
Hello.

As reported in [1], m68k has been broken since I installed the patch. Reason is 
that the target
does not support atomic operations (add, or) for a mode of gcov_type. Because 
of that, we see
an undefined symbols.

Proper fix contains of 2 parts:
a) compiler emission must verify that -fprofile-update=atomic is doable for a 
given target; it's done
via a new function can_generate_atomic_builtin
b) libgcc must detect whether __atomic_fetch_add_x can be expanded on the 
target; that requires configure
support and if the target is not capable to expand these, we must conditionally 
remove all gcov_.*profiler_atomic
functions from libgcov.a.

I'm fine with the coverage-pecific changes, but the new hooks etc are not something I can approve.

gcc/ChangeLog:

2016-08-12  Martin Liska  <mli...@suse.cz>

        * optabs.c (can_generate_atomic_builtin): New function.
        * optabs.h (can_generate_atomic_builtin): Declare the function.
Need GWM or similar review

        * tree-profile.c (tree_profiling):  Detect whether target can use
        -fprofile-update=atomic.
ok

gcc/testsuite/ChangeLog:

2016-08-12  Martin Liska  <mli...@suse.cz>

        * gcc.dg/profile-update-warning.c: New test.
ok

libgcc/ChangeLog:

2016-08-16  Martin Liska  <mli...@suse.cz>

        * acinclude.m4: New file.
        * config.in: New macro defines.
        * configure: Regenerated.
        * configure.ac: Detect atomic operations.
need GWM or similar review

        * libgcov-profiler.c: Detect GCOV_SUPPORTS_ATOMIC and
        conditionaly enable/disable *_atomic functions.
OK.

nathan

Reply via email to