Do we need the same change for if-statements too?

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

Reply via email to