search for: profc_f1

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: >>>> >>...