search for: profc_f2

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