# 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