On Tue, Sep 6, 2016 at 6:45 AM, Martin Liška <mli...@suse.cz> wrote:

>>> 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
>
> Hi Nathan.
>
> Thanks for review, I'm CCing Jakub and Richard for the review.
> The patch should fix very similar issue spotted on AIX target by David.

What about Jakub's comment in the PR?

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77378#c6

The proposed patch seems wrong or at least incomplete.  The recent
change is imposing a 64 bit DImode counter when producing 32 bit code.
PowerPC does support 64 bit atomic operations in 32 bit mode.

Was there a design decision that profile counters always should be 64
bits?  Either 32 bit targets won't support multi-threaded profiling or
32 bit targets can overflow the counter sooner.  Which is worse?
Which is more likely?

Thanks, David

Reply via email to