Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / compiler-rt / test / fuzzer / set_cover_merge.test
blob0a5d0abb0660f7c8cd32c94aac47e89258a9bccb
1 RUN: %cpp_compiler %S/FullCoverageSetTest.cpp -o %t-FullCoverageSetTest
3 RUN: rm -rf %t/T1 %t/T2
4 RUN: mkdir -p %t/T1 %t/T2
5 RUN: echo F..... > %t/T1/1
6 RUN: echo .U.... > %t/T1/2
7 RUN: echo ..Z... > %t/T1/3
9 # T1 has 3 elements, T2 is empty.
10 RUN: %run %t-FullCoverageSetTest         -set_cover_merge=1 %t/T1 %t/T2 2>&1 | FileCheck %s --check-prefix=CHECK1
11 CHECK1: MERGE-OUTER: 3 files, 3 in the initial corpus
12 CHECK1: MERGE-OUTER: 0 new files with 0 new features added
14 RUN: echo ...Z.. > %t/T2/1
15 RUN: echo ....E. > %t/T2/2
16 RUN: echo .....R > %t/T2/3
17 RUN: echo F..... > %t/T2/a
18 RUN: echo .U.... > %t/T2/b
19 RUN: echo ..Z... > %t/T2/c
21 # T1 has 3 elements, T2 has 6 elements, only 3 are new.
22 RUN: %run %t-FullCoverageSetTest         -set_cover_merge=1 %t/T1 %t/T2 2>&1 | FileCheck %s --check-prefix=CHECK2
23 CHECK2: MERGE-OUTER: 9 files, 3 in the initial corpus
24 CHECK2: MERGE-OUTER: 3 new files with 3 new features added
26 # Now, T1 has 6 units and T2 has no new interesting units.
27 RUN: %run %t-FullCoverageSetTest         -set_cover_merge=1 %t/T1 %t/T2 2>&1 | FileCheck %s --check-prefix=CHECK3
28 CHECK3: MERGE-OUTER: 12 files, 6 in the initial corpus
29 CHECK3: MERGE-OUTER: 0 new files with 0 new features added
31 RUN: rm -rf %t/T1/* %t/T2/*
32 RUN: mkdir -p %t/T3
33 RUN: echo ...... > %t/T1/1
34 RUN: echo F..... > %t/T2/a
35 RUN: echo .U.... > %t/T2/b
36 RUN: echo ..Z... > %t/T2/c
37 RUN: echo ...Z.. > %t/T3/1
38 RUN: echo ....E. > %t/T3/2
39 RUN: echo .....R > %t/T3/3
40 RUN: echo .UZZER. > %t/T3/a
41 RUN: echo .UZZER.. > %t/T3/b
42 RUN: echo ...... > %t/T3/c
44 # T1 is empty, T2 and T3 have overlapping features. The optimal solution
45 # consists of 2 files: T2/a, T3/a. These files cover 6 new features.
46 # Although T3/a is larger in size (1 more byte) we prefer it because
47 # it covers more features than any other file.
48 RUN: %run %t-FullCoverageSetTest         -set_cover_merge=1 %t/T1 %t/T2 %t/T3 2>&1 | FileCheck %s --check-prefix=CHECK_OVERLAP
49 CHECK_OVERLAP: MERGE-OUTER: 10 files, 1 in the initial corpus
50 CHECK_OVERLAP: MERGE-OUTER: 2 new files with 6 new features added
51 # Make sure that we are prefering smaller files (T3/a over T3/b).
52 RUN: diff %t/T1/1b2301992a0266982b135fee5164937d7f7abca3 %t/T3/a
54 RUN: rm -rf %t/T1/* %t/T2/* %t/T3/*
55 RUN: echo ...... > %t/T1/1
56 RUN: echo F..... > %t/T2/a
57 RUN: echo .U.... > %t/T2/b
58 RUN: echo ..Z... > %t/T2/c
59 RUN: echo ...Z.. > %t/T3/1
60 RUN: echo ....E. > %t/T3/2
61 RUN: echo .....R > %t/T3/3
62 RUN: echo .UZZER. > %t/T3/a
63 RUN: echo .UZZER.. > %t/T3/b
64 RUN: echo ...... > %t/T3/c
66 # Test the previous scenario with the '-merge=1' flag.
67 # Expect more files to be added to the first corpus, since '-merge=1'
68 # is going to prefer smaller files and ignore the fact that
69 # T3/a covers almost all of the available features.
70 RUN: %run %t-FullCoverageSetTest         -merge=1 %t/T1 %t/T2 %t/T3 2>&1 | FileCheck %s --check-prefix=CHECK_OVERLAP2
71 CHECK_OVERLAP2: MERGE-OUTER: 10 files, 1 in the initial corpus
72 CHECK_OVERLAP2: MERGE-OUTER: 6 new files with 6 new features added