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: [google gcc-4_8] Don't use gcov counter related ssa name as induction variables


ok for google branch for now.  Please resubmit to trunk and backport
the trunk version if needed.

thanks,

David

On Tue, Feb 11, 2014 at 10:29 AM, Wei Mi <wmi@google.com> wrote:
>>> +/* Return true if the use is defined by a gcov counter var.
>>> +   It is used to check if an iv candidate is generated for
>>> +   profiling. For profile generated ssa name, we should not
>>> +   use it as IV because gcov counter may have data-race for
>>> +   multithread program, it could involve tricky bug to use
>>> +   such ssa var in IVOPT.
>>> +
>>
>> Add the snippets describing how ralloc introduces a second gcov
>> counter load and asynchronous update of it from another thread leading
>> to bogus trip count.
>>
>> Also mention that setting volatile flag on gcov counter accesses may
>> greatly degrade profile-gen performance.
>>
>
> Comments added.
>
>>> +  if (!is_gimple_assign (stmt))
>>> +    return false;
>>> +
>>> +  rhs = gimple_assign_rhs1 (stmt);
>>> +  if (TREE_CODE (rhs) != ARRAY_REF)
>>> +    return false;
>>> +
>>> +  decl = TREE_OPERAND (rhs, 0);
>>> +  if (TREE_CODE (decl) != VAR_DECL)
>>> +    return false;
>>
>>
>>
>> Also check TREE_STATIC and DECL_ARTIFICIAL flag.
>>
>>
>> David
>>
>
> Check added. Add DECL_ARTIFICIAL setting in build_var() in coverage.c.
>
> The updated patch is attached.
>
> Thanks,
> Wei.


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