diff options
Diffstat (limited to 'test/tools/llvm-profdata')
-rw-r--r-- | test/tools/llvm-profdata/Inputs/no-counts.profdata | 3 | ||||
-rw-r--r-- | test/tools/llvm-profdata/errors.test | 11 | ||||
-rw-r--r-- | test/tools/llvm-profdata/raw-two-profiles.test | 64 | ||||
-rw-r--r-- | test/tools/llvm-profdata/simple.test | 27 |
4 files changed, 92 insertions, 13 deletions
diff --git a/test/tools/llvm-profdata/Inputs/no-counts.profdata b/test/tools/llvm-profdata/Inputs/no-counts.profdata new file mode 100644 index 0000000..5c1fa15 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/no-counts.profdata @@ -0,0 +1,3 @@ +no_counts +0 +0 diff --git a/test/tools/llvm-profdata/errors.test b/test/tools/llvm-profdata/errors.test index 6ccb084..28262ef 100644 --- a/test/tools/llvm-profdata/errors.test +++ b/test/tools/llvm-profdata/errors.test @@ -1,13 +1,16 @@ -RUN: llvm-profdata merge %p/Inputs/foo3-1.profdata %p/Inputs/foo4-1.profdata -o /dev/null 2>&1 | FileCheck %s --check-prefix=HASH +RUN: llvm-profdata merge %p/Inputs/foo3-1.profdata %p/Inputs/foo4-1.profdata -o %t.out 2>&1 | FileCheck %s --check-prefix=HASH HASH: foo4-1.profdata: foo: Function hash mismatch -RUN: llvm-profdata merge %p/Inputs/overflow.profdata %p/Inputs/overflow.profdata -o /dev/null 2>&1 | FileCheck %s --check-prefix=OVERFLOW +RUN: llvm-profdata merge %p/Inputs/overflow.profdata %p/Inputs/overflow.profdata -o %t.out 2>&1 | FileCheck %s --check-prefix=OVERFLOW OVERFLOW: overflow.profdata: overflow: Counter overflow RUN: not llvm-profdata show %p/Inputs/invalid-count-later.profdata 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT-LATER -RUN: not llvm-profdata merge %p/Inputs/invalid-count-later.profdata %p/Inputs/invalid-count-later.profdata 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT-LATER +RUN: not llvm-profdata merge %p/Inputs/invalid-count-later.profdata %p/Inputs/invalid-count-later.profdata -o %t.out 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT-LATER INVALID-COUNT-LATER: error: {{.*}}invalid-count-later.profdata: Malformed profile data RUN: not llvm-profdata show %p/Inputs/bad-hash.profdata 2>&1 | FileCheck %s --check-prefix=BAD-HASH -RUN: not llvm-profdata merge %p/Inputs/bad-hash.profdata %p/Inputs/bad-hash.profdata 2>&1 | FileCheck %s --check-prefix=BAD-HASH +RUN: not llvm-profdata merge %p/Inputs/bad-hash.profdata %p/Inputs/bad-hash.profdata -o %t.out 2>&1 | FileCheck %s --check-prefix=BAD-HASH BAD-HASH: error: {{.*}}bad-hash.profdata: Malformed profile data + +RUN: not llvm-profdata show %p/Inputs/no-counts.profdata 2>&1 | FileCheck %s --check-prefix=NO-COUNTS +NO-COUNTS: error: {{.*}}no-counts.profdata: Malformed profile data diff --git a/test/tools/llvm-profdata/raw-two-profiles.test b/test/tools/llvm-profdata/raw-two-profiles.test new file mode 100644 index 0000000..3260836 --- /dev/null +++ b/test/tools/llvm-profdata/raw-two-profiles.test @@ -0,0 +1,64 @@ +RUN: printf '\201rforpl\377' > %t-foo.profraw +RUN: printf '\1\0\0\0\0\0\0\0' >> %t-foo.profraw +RUN: printf '\1\0\0\0\0\0\0\0' >> %t-foo.profraw +RUN: printf '\1\0\0\0\0\0\0\0' >> %t-foo.profraw +RUN: printf '\3\0\0\0\0\0\0\0' >> %t-foo.profraw +RUN: printf '\0\0\4\0\1\0\0\0' >> %t-foo.profraw +RUN: printf '\0\0\4\0\2\0\0\0' >> %t-foo.profraw + +RUN: printf '\3\0\0\0' >> %t-foo.profraw +RUN: printf '\1\0\0\0' >> %t-foo.profraw +RUN: printf '\1\0\0\0\0\0\0\0' >> %t-foo.profraw +RUN: printf '\0\0\4\0\2\0\0\0' >> %t-foo.profraw +RUN: printf '\0\0\4\0\1\0\0\0' >> %t-foo.profraw + +RUN: printf '\023\0\0\0\0\0\0\0' >> %t-foo.profraw +RUN: printf 'foo' >> %t-foo.profraw + +RUN: printf '\201rforpl\377' > %t-bar.profraw +RUN: printf '\1\0\0\0\0\0\0\0' >> %t-bar.profraw +RUN: printf '\1\0\0\0\0\0\0\0' >> %t-bar.profraw +RUN: printf '\2\0\0\0\0\0\0\0' >> %t-bar.profraw +RUN: printf '\3\0\0\0\0\0\0\0' >> %t-bar.profraw +RUN: printf '\0\0\6\0\1\0\0\0' >> %t-bar.profraw +RUN: printf '\0\0\6\0\2\0\0\0' >> %t-bar.profraw + +RUN: printf '\3\0\0\0' >> %t-bar.profraw +RUN: printf '\2\0\0\0' >> %t-bar.profraw +RUN: printf '\2\0\0\0\0\0\0\0' >> %t-bar.profraw +RUN: printf '\0\0\6\0\2\0\0\0' >> %t-bar.profraw +RUN: printf '\0\0\6\0\1\0\0\0' >> %t-bar.profraw + +RUN: printf '\067\0\0\0\0\0\0\0' >> %t-bar.profraw +RUN: printf '\101\0\0\0\0\0\0\0' >> %t-bar.profraw +RUN: printf 'bar' >> %t-bar.profraw + +Versions of the profiles that are padded to eight byte alignment. +RUN: cat %t-foo.profraw > %t-foo-padded.profraw +RUN: printf '\0\0\0\0\0' >> %t-foo-padded.profraw +RUN: cat %t-bar.profraw > %t-bar-padded.profraw +RUN: printf '\0\0\0\0\0' >> %t-bar-padded.profraw + +RUN: cat %t-foo.profraw %t-bar.profraw > %t-nopad.profraw +RUN: cat %t-foo-padded.profraw %t-bar.profraw > %t-pad-between.profraw +RUN: cat %t-foo-padded.profraw %t-bar-padded.profraw > %t-pad.profraw + +RUN: llvm-profdata show %t-nopad.profraw -all-functions -counts | FileCheck %s +RUN: llvm-profdata show %t-pad-between.profraw -all-functions -counts | FileCheck %s +RUN: llvm-profdata show %t-pad.profraw -all-functions -counts | FileCheck %s + +CHECK: Counters: +CHECK: foo: +CHECK: Hash: 0x0000000000000001 +CHECK: Counters: 1 +CHECK: Function count: 19 +CHECK: Block counts: [] +CHECK: bar: +CHECK: Hash: 0x0000000000000002 +CHECK: Counters: 2 +CHECK: Function count: 55 +CHECK: Block counts: [65] +CHECK: Functions shown: 2 +CHECK: Total functions: 2 +CHECK: Maximum function count: 55 +CHECK: Maximum internal block count: 65 diff --git a/test/tools/llvm-profdata/simple.test b/test/tools/llvm-profdata/simple.test index 97dda5a..18741dd 100644 --- a/test/tools/llvm-profdata/simple.test +++ b/test/tools/llvm-profdata/simple.test @@ -1,5 +1,7 @@ -RUN: llvm-profdata merge %p/Inputs/foo3-1.profdata %p/Inputs/foo3-2.profdata | llvm-profdata show - -all-functions -counts | FileCheck %s --check-prefix=FOO3 -RUN: llvm-profdata merge %p/Inputs/foo3-2.profdata %p/Inputs/foo3-1.profdata | llvm-profdata show - -all-functions -counts | FileCheck %s --check-prefix=FOO3 +RUN: llvm-profdata merge %p/Inputs/foo3-1.profdata %p/Inputs/foo3-2.profdata -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3 +RUN: llvm-profdata merge %p/Inputs/foo3-2.profdata %p/Inputs/foo3-1.profdata -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3 FOO3: foo: FOO3: Counters: 3 FOO3: Function count: 8 @@ -8,8 +10,10 @@ FOO3: Total functions: 1 FOO3: Maximum function count: 8 FOO3: Maximum internal block count: 7 -RUN: llvm-profdata merge %p/Inputs/foo4-1.profdata %p/Inputs/foo4-2.profdata | llvm-profdata show - -all-functions -counts | FileCheck %s --check-prefix=FOO4 -RUN: llvm-profdata merge %p/Inputs/foo4-2.profdata %p/Inputs/foo4-1.profdata | llvm-profdata show - -all-functions -counts | FileCheck %s --check-prefix=FOO4 +RUN: llvm-profdata merge %p/Inputs/foo4-1.profdata %p/Inputs/foo4-2.profdata -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO4 +RUN: llvm-profdata merge %p/Inputs/foo4-2.profdata %p/Inputs/foo4-1.profdata -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO4 FOO4: foo: FOO4: Counters: 4 FOO4: Function count: 18 @@ -18,8 +22,10 @@ FOO4: Total functions: 1 FOO4: Maximum function count: 18 FOO4: Maximum internal block count: 48 -RUN: llvm-profdata merge %p/Inputs/foo3bar3-1.profdata %p/Inputs/foo3bar3-2.profdata | llvm-profdata show - -all-functions -counts | FileCheck %s --check-prefix=FOO3BAR3 -RUN: llvm-profdata merge %p/Inputs/foo3bar3-2.profdata %p/Inputs/foo3bar3-1.profdata | llvm-profdata show - -all-functions -counts | FileCheck %s --check-prefix=FOO3BAR3 +RUN: llvm-profdata merge %p/Inputs/foo3bar3-1.profdata %p/Inputs/foo3bar3-2.profdata -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3BAR3 +RUN: llvm-profdata merge %p/Inputs/foo3bar3-2.profdata %p/Inputs/foo3bar3-1.profdata -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3BAR3 FOO3BAR3: foo: FOO3BAR3: Counters: 3 FOO3BAR3: Function count: 19 @@ -32,7 +38,8 @@ FOO3BAR3: Total functions: 2 FOO3BAR3: Maximum function count: 36 FOO3BAR3: Maximum internal block count: 50 -RUN: llvm-profdata merge %p/Inputs/empty.profdata %p/Inputs/foo3-1.profdata | llvm-profdata show - -all-functions -counts | FileCheck %s --check-prefix=FOO3EMPTY +RUN: llvm-profdata merge %p/Inputs/empty.profdata %p/Inputs/foo3-1.profdata -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3EMPTY FOO3EMPTY: foo: FOO3EMPTY: Counters: 3 FOO3EMPTY: Function count: 1 @@ -41,7 +48,8 @@ FOO3EMPTY: Total functions: 1 FOO3EMPTY: Maximum function count: 1 FOO3EMPTY: Maximum internal block count: 3 -RUN: llvm-profdata merge %p/Inputs/foo3-1.profdata %p/Inputs/foo3bar3-1.profdata | llvm-profdata show - -all-functions -counts | FileCheck %s --check-prefix=FOO3FOO3BAR3 +RUN: llvm-profdata merge %p/Inputs/foo3-1.profdata %p/Inputs/foo3bar3-1.profdata -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3FOO3BAR3 FOO3FOO3BAR3: foo: FOO3FOO3BAR3: Counters: 3 FOO3FOO3BAR3: Function count: 3 @@ -54,7 +62,8 @@ FOO3FOO3BAR3: Total functions: 2 FOO3FOO3BAR3: Maximum function count: 7 FOO3FOO3BAR3: Maximum internal block count: 13 -RUN: llvm-profdata merge %p/Inputs/foo3-1.profdata %p/Inputs/bar3-1.profdata | llvm-profdata show - -all-functions -counts | FileCheck %s --check-prefix=DISJOINT +RUN: llvm-profdata merge %p/Inputs/foo3-1.profdata %p/Inputs/bar3-1.profdata -o %t +RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=DISJOINT DISJOINT: foo: DISJOINT: Counters: 3 DISJOINT: Function count: 1 |