Displaying 6 results from an estimated 6 matches for "profc_f2".
Did you mean:
profc_f1
2016 Mar 11
5
RFC: Pass to prune redundant profiling instrumentation
...y are
all marked as aliases in one pass.
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...
2016 Mar 11
8
RFC: Pass to prune redundant profiling instrumentation
...k.
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_f2).
I've noticed that frontend-based instrumentation c...
2016 Mar 12
2
RFC: Pass to prune redundant profiling instrumentation
...t;
>
> 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)...
2016 Mar 11
3
RFC: Pass to prune redundant profiling instrumentation
...39;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 i...
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...
2016 Mar 11
2
RFC: Pass to prune redundant profiling instrumentation
...> 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...