| # Test MC/DC bitmap reading and merging. |
| |
| # Merge as profdata. |
| RUN: split-file %s %t |
| RUN: llvm-profdata merge %t/mcdc-1.proftext %t/mcdc-2.proftext -o %t.profdata |
| RUN: llvm-profdata show %t.profdata --text -all-functions | FileCheck %s --check-prefix=MCDC |
| # Merge as proftext. |
| RUN: llvm-profdata merge %t/mcdc-1.proftext %t/mcdc-2.proftext -o %t.proftext |
| RUN: llvm-profdata show %t.proftext --text -all-functions | FileCheck %s --check-prefix=MCDC |
| |
| MCDC: # Num Bitmap Bytes: |
| MCDC-NEXT: $1 |
| MCDC-NEXT: # Bitmap Byte Values: |
| MCDC-NEXT: a |
| MCDC: # Num Bitmap Bytes: |
| MCDC-NEXT: $2 |
| MCDC-NEXT: # Bitmap Byte Values: |
| MCDC-NEXT: 0x29 |
| MCDC-NEXT: 0x0 |
| |
| # Merge as profdata. |
| RUN: llvm-profdata merge %t/mcdc-3.proftext %t/mcdc-4.proftext -o %t.profdata |
| RUN: llvm-profdata show %t.profdata --text -all-functions | FileCheck %s --check-prefix=MCDC2 |
| # Merge as proftext. |
| RUN: llvm-profdata merge %t/mcdc-3.proftext %t/mcdc-4.proftext -o %t.proftext |
| RUN: llvm-profdata show %t.proftext --text -all-functions | FileCheck %s --check-prefix=MCDC2 |
| |
| MCDC2: # Num Bitmap Bytes: |
| MCDC2-NEXT: $8 |
| MCDC2-NEXT: # Bitmap Byte Values: |
| MCDC2-NEXT: 0x1 |
| MCDC2-NEXT: 0x2 |
| MCDC2-NEXT: 0x3 |
| MCDC2-NEXT: 0xf |
| MCDC2-NEXT: 0xf |
| MCDC2-NEXT: 0xe |
| MCDC2-NEXT: 0xf |
| MCDC2-NEXT: 0xa |
| |
| # Incompatible size mismatch. |
| RUN: llvm-profdata merge %t/mcdc-2.proftext %t/mcdc-4.proftext -o %t.profdata 2>&1 | FileCheck %s --check-prefix=MCDC3 |
| # Merge as proftext |
| RUN: llvm-profdata merge %t/mcdc-2.proftext %t/mcdc-4.proftext -o %t.proftext 2>&1 | FileCheck %s --check-prefix=MCDC3 |
| |
| MCDC3: function bitmap size change detected (bitmap size mismatch) |
| |
| # Invalid number of bitmap bytes. |
| RUN: not llvm-profdata merge %t/mcdc-3.proftext %t/mcdc-err0.proftext -o %t.proftext 2>&1 | FileCheck %s --check-prefix=MCDC4 |
| |
| MCDC4: malformed instrumentation profile data: number of bitmap bytes is not a valid integer |
| |
| # Invalid bitmap byte. |
| RUN: not llvm-profdata merge %t/mcdc-3.proftext %t/mcdc-err1.proftext -o %t.proftext 2>&1 | FileCheck %s --check-prefix=MCDC5 |
| |
| MCDC5: malformed instrumentation profile data: bitmap byte is not a valid integer |
| |
| ;--- mcdc-1.proftext |
| main |
| # Func Hash: |
| 702755447896 |
| # Num Counters: |
| 4 |
| # Counter Values: |
| 1 |
| 0 |
| 1 |
| 0 |
| # Num Bitmask Bytes: |
| $1 |
| # Bitmask Byte Values: |
| 2 |
| ;--- mcdc-2.proftext |
| main |
| # Func Hash: |
| 702755447896 |
| # Num Counters: |
| 4 |
| # Counter Values: |
| 1 |
| 1 |
| 1 |
| 1 |
| # Num Bitmask Bytes: |
| $1 |
| # Bitmask Byte Values: |
| 8 |
| |
| |
| test3 |
| # Func Hash: |
| 15288018065 |
| # Num Counters: |
| 6 |
| # Counter Values: |
| 4 |
| 2 |
| 1 |
| 0 |
| 0 |
| 2 |
| # Num Bitmask Bytes: |
| $0x2 |
| # Bitmask Byte Values: |
| 0x29 |
| 0x0 |
| ;--- mcdc-3.proftext |
| test3 |
| # Func Hash: |
| 15288018065 |
| # Num Counters: |
| 6 |
| # Counter Values: |
| 4 |
| 2 |
| 1 |
| 0 |
| 0 |
| 2 |
| # Num Bitmask Bytes: |
| $8 |
| # Bitmask Byte Values: |
| 0x0 |
| 0x2 |
| 0x3 |
| 0xf |
| 0xf |
| 0xa |
| 0xc |
| 0x2 |
| ;--- mcdc-4.proftext |
| test3 |
| # Func Hash: |
| 15288018065 |
| # Num Counters: |
| 6 |
| # Counter Values: |
| 4 |
| 2 |
| 1 |
| 0 |
| 0 |
| 2 |
| # Num Bitmask Bytes: |
| $ 8 |
| # Bitmask Byte Values: |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| ;--- mcdc-err0.proftext |
| test3 |
| # Func Hash: |
| 15288018065 |
| # Num Counters: |
| 6 |
| # Counter Values: |
| 4 |
| 2 |
| 1 |
| 0 |
| 0 |
| 2 |
| # Num Bitmask Bytes: |
| $8.9 |
| # Bitmask Byte Values: |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| ;--- mcdc-err1.proftext |
| test3 |
| # Func Hash: |
| 15288018065 |
| # Num Counters: |
| 6 |
| # Counter Values: |
| 4 |
| 2 |
| 1 |
| 0 |
| 0 |
| 2 |
| # Num Bitmask Bytes: |
| $8 |
| # Bitmask Byte Values: |
| 1 |
| 2 |
| 3 |
| 4 |
| 5.4 |
| 6 |
| 7 |
| 8 |