diff options
| author | Rong Xu <xur@google.com> | 2017-03-15 21:05:24 +0000 | 
|---|---|---|
| committer | Rong Xu <xur@google.com> | 2017-03-15 21:05:24 +0000 | 
| commit | d709b0fe95110a0ebb2bb35566e9e11550bb19d5 (patch) | |
| tree | cee664eddb225a24fde0f05c9c742bf34feeef67 /llvm/lib/Transforms | |
| parent | b99247e608f7036727371602b82b768a53b1a01c (diff) | |
| download | bcm5719-llvm-d709b0fe95110a0ebb2bb35566e9e11550bb19d5.tar.gz bcm5719-llvm-d709b0fe95110a0ebb2bb35566e9e11550bb19d5.zip | |
[PGO] Minor cleanup for count instruction in SelectInstVisitor.
Summary:
NSIs can be double-counted by different operations in
SelectInstVisitor. Sink the the update to VM_counting mode only.
Also reset the value for each counting operation.
Reviewers: davidxl
Reviewed By: davidxl
Subscribers: xur, llvm-commits
Differential Revision: https://reviews.llvm.org/D30999
llvm-svn: 297892
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp b/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp index 6b3c4b92e76..d33961813e8 100644 --- a/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp +++ b/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp @@ -200,6 +200,7 @@ struct SelectInstVisitor : public InstVisitor<SelectInstVisitor> {    SelectInstVisitor(Function &Func) : F(Func) {}    void countSelects(Function &Func) { +    NSIs = 0;      Mode = VM_counting;      visit(Func);    } @@ -229,6 +230,8 @@ struct SelectInstVisitor : public InstVisitor<SelectInstVisitor> {    void annotateOneSelectInst(SelectInst &SI);    // Visit \p SI instruction and perform tasks according to visit mode.    void visitSelectInst(SelectInst &SI); +  // Return the number of select instructions. This needs be called after +  // countSelects().    unsigned getNumOfSelectInsts() const { return NSIs; }  }; @@ -1058,9 +1061,9 @@ void SelectInstVisitor::visitSelectInst(SelectInst &SI) {    if (SI.getCondition()->getType()->isVectorTy())      return; -  NSIs++;    switch (Mode) {    case VM_counting: +    NSIs++;      return;    case VM_instrument:      instrumentOneSelectInst(SI); | 

