On 13 October 2016 at 03:42, Richard Smith <rich...@metafoo.co.uk> wrote:
> Do we need the same change for if-statements too? > Yes, a similar change should be made for them as well. > > On 12 Oct 2016 6:26 pm, "Vedant Kumar via cfe-commits" < > cfe-commits@lists.llvm.org> wrote: > >> vsk created this revision. >> vsk added reviewers: arphaman, ikudrin. >> vsk added a subscriber: cfe-commits. >> >> Generate coverage mappings for <init> in switch (<init>; <cond>). >> >> I'm unsure about whether or not the CodeGenPGO change in this patch >> deserves more testing. >> >> >> https://reviews.llvm.org/D25539 >> >> Files: >> lib/CodeGen/CodeGenPGO.cpp >> lib/CodeGen/CoverageMappingGen.cpp >> test/CoverageMapping/switch.c >> test/CoverageMapping/switch.cpp >> >> >> Index: test/CoverageMapping/switch.cpp >> =================================================================== >> --- test/CoverageMapping/switch.cpp >> +++ test/CoverageMapping/switch.cpp >> @@ -1,4 +1,5 @@ >> -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping >> -dump-coverage-mapping -emit-llvm-only -main-file-name switch.c %s | >> FileCheck %s >> +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping >> -dump-coverage-mapping -emit-llvm-only -std=c++1z -triple >> %itanium_abi_triple -main-file-name switch.cpp %s | FileCheck %s >> + >> // CHECK: foo >> void foo(int i) { // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+8]]:2 >> = #0 >> switch(i) { >> @@ -10,7 +11,7 @@ >> int x = 0; // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:2 >> = #1 >> } >> >> -void nop() {} >> +int nop() { return 0; } >> >> // CHECK: bar >> void bar(int i) { // CHECK-NEXT: File 0, [[@LINE]]:17 -> >> [[@LINE+20]]:2 = #0 >> @@ -35,8 +36,16 @@ >> nop(); // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:2 >> = #6 >> } >> >> + // CHECK: baz >> +void baz() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+5]]:2 >> = #0 >> + switch (int i = true ? nop() // CHECK-NEXT: [[@LINE]]:26 -> >> [[@LINE]]:31 = #2 >> + : nop(); // CHECK-NEXT: [[@LINE]]:26 -> >> [[@LINE]]:31 = (#0 - #2) >> + i) {} >> + nop(); // CHECK-NEXT: [[@LINE]]:3 -> [[@LINE+1]]:2 = #1 >> +} >> + >> // CHECK-NEXT: main >> -int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> >> [[@LINE+34]]:2 = #0 >> +int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> >> [[@LINE+35]]:2 = #0 >> int i = 0; >> switch(i) { >> case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+7]]:10 >> = #2 >> @@ -48,7 +57,7 @@ >> default: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 >> = #4 >> break; >> } >> - switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+22]]:2 >> = #1 >> + switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+23]]:2 >> = #1 >> case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+6]]:10 >> = #6 >> i = 1; >> break; >> @@ -58,16 +67,17 @@ >> break; >> } >> >> - switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+12]]:2 >> = #5 >> + switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+13]]:2 >> = #5 >> case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+5]]:11 >> = #10 >> case 2: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+4]]:11 >> = (#10 + #11) >> i = 11; >> case 3: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:11 >> = ((#10 + #11) + #12) >> case 4: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:11 >> = (((#10 + #11) + #12) + #13) >> i = 99; >> } >> >> - foo(1); // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:11 >> = #9 >> + foo(1); // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:11 >> = #9 >> bar(1); >> + baz(); >> return 0; >> } >> Index: lib/CodeGen/CoverageMappingGen.cpp >> =================================================================== >> --- lib/CodeGen/CoverageMappingGen.cpp >> +++ lib/CodeGen/CoverageMappingGen.cpp >> @@ -813,6 +813,9 @@ >> >> void VisitSwitchStmt(const SwitchStmt *S) { >> extendRegion(S); >> + if (S->getInit()) >> + Visit(S->getInit()); >> + >> Visit(S->getCond()); >> >> BreakContinueStack.push_back(BreakContinue()); >> Index: lib/CodeGen/CodeGenPGO.cpp >> =================================================================== >> --- lib/CodeGen/CodeGenPGO.cpp >> +++ lib/CodeGen/CodeGenPGO.cpp >> @@ -458,6 +458,8 @@ >> >> void VisitSwitchStmt(const SwitchStmt *S) { >> RecordStmtCount(S); >> + if (S->getInit()) >> + Visit(S->getInit()); >> Visit(S->getCond()); >> CurrentCount = 0; >> BreakContinueStack.push_back(BreakContinue()); >> >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> >>
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits