Displaying 6 results from an estimated 6 matches for "profc_f1".
Did you mean:
profc_f2
2016 Mar 11
5
RFC: Pass to prune redundant profiling instrumentation
...3.
>> Erase all updates to redundant profile counters.
>
> When you are saying "erase", you need to actually replace the multiple counter increment with *a new* counter, right? I.e. when replacing:
>
> instrprof_increment(profc_f2);
> instrprof_increment(profc_f1);
>
> you need to emit:
>
> instrprof_increment(profc_f2f1_fused);
No. The pass only erases updates to counters which it can prove are
truly redundant. There is no need to create a new (or fused) counter
because profc_f1 == profc_f2 in all possible profiles.
4.
>> The co...
2016 Mar 11
8
RFC: Pass to prune redundant profiling instrumentation
...be my approach, share some early results,
and gather feedback.
Problem Overview
================
A profile counter is redundant if it's incremented in exactly the same basic
blocks as some other profile counter. Consider the following module:
local void f1() {
instrprof_increment(profc_f1);
}
void f2() {
instrprof_increment(profc_f2);
f1();
}
Once the inliner runs and deletes f1, we're left with:
void f2() {
instrprof_increment(profc_f2);
instrprof_increment(profc_f1);
}
Now we can say profc_f1 is redundant (or, an alias for profc_...
2016 Mar 12
2
RFC: Pass to prune redundant profiling instrumentation
...ll updates to redundant profile counters.
> >
> > When you are saying "erase", you need to actually replace the multiple counter increment with *a new* counter, right? I.e. when replacing:
> >
> > instrprof_increment(profc_f2);
> > instrprof_increment(profc_f1);
> >
> > you need to emit:
> >
> > instrprof_increment(profc_f2f1_fused);
>
>
> No. The pass only erases updates to counters which it can prove are
> truly redundant. There is no need to create a new (or fused) counter
> because profc_f1 == profc_f2 in...
2016 Mar 11
3
RFC: Pass to prune redundant profiling instrumentation
...lem Overview
>> ================
>>
>> A profile counter is redundant if it's incremented in exactly the same
>> basic
>> blocks as some other profile counter. Consider the following module:
>>
>> local void f1() {
>> instrprof_increment(profc_f1);
>> }
>>
>> void f2() {
>> instrprof_increment(profc_f2);
>> f1();
>> }
>>
>> Once the inliner runs and deletes f1, we're left with:
>>
>> void f2() {
>> instrprof_increment(profc_f2);
>>...
2016 Mar 12
2
RFC: Pass to prune redundant profiling instrumentation
...; >
>> > > When you are saying "erase", you need to actually replace the
>> multiple counter increment with *a new* counter, right? I.e. when replacing:
>> > >
>> > > instrprof_increment(profc_f2);
>> > > instrprof_increment(profc_f1);
>> > >
>> > > you need to emit:
>> > >
>> > > instrprof_increment(profc_f2f1_fused);
>> >
>> >
>> > No. The pass only erases updates to counters which it can prove are
>> > truly redundant. There is no need to...
2016 Mar 11
2
RFC: Pass to prune redundant profiling instrumentation
...>>>> A profile counter is redundant if it's incremented in exactly the same
>>>> basic
>>>> blocks as some other profile counter. Consider the following module:
>>>>
>>>> local void f1() {
>>>> instrprof_increment(profc_f1);
>>>> }
>>>>
>>>> void f2() {
>>>> instrprof_increment(profc_f2);
>>>> f1();
>>>> }
>>>>
>>>> Once the inliner runs and deletes f1, we're left with:
>>>>
>>...