diff options
| author | Justin Bogner <mail@justinbogner.com> | 2014-03-12 20:14:17 +0000 |
|---|---|---|
| committer | Justin Bogner <mail@justinbogner.com> | 2014-03-12 20:14:17 +0000 |
| commit | bfee8d49c4dcb9674fc3ae5c39f131685c516663 (patch) | |
| tree | 46fcbe5d400d9264908e6c8f6004807b5f573404 /llvm/test/tools | |
| parent | a2e0368994e9ba8a26dce854b64b03281910d6b2 (diff) | |
| download | bcm5719-llvm-bfee8d49c4dcb9674fc3ae5c39f131685c516663.tar.gz bcm5719-llvm-bfee8d49c4dcb9674fc3ae5c39f131685c516663.zip | |
llvm-profdata: Use the Profile library, implement show and generate
This replaces the llvm-profdata tool with a version that uses the
recently introduced Profile library. The new tool has the ability to
generate and summarize profdata files as well as merging them.
llvm-svn: 203704
Diffstat (limited to 'llvm/test/tools')
25 files changed, 150 insertions, 77 deletions
diff --git a/llvm/test/tools/llvm-profdata/Inputs/bad-function-count.profdata b/llvm/test/tools/llvm-profdata/Inputs/bad-function-count.profdata deleted file mode 100644 index 7d247626e5a..00000000000 --- a/llvm/test/tools/llvm-profdata/Inputs/bad-function-count.profdata +++ /dev/null @@ -1,2 +0,0 @@ -function_count_not 1count -1 diff --git a/llvm/test/tools/llvm-profdata/Inputs/bad-hash.profdata.input b/llvm/test/tools/llvm-profdata/Inputs/bad-hash.profdata.input new file mode 100644 index 00000000000..faa6f401525 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/bad-hash.profdata.input @@ -0,0 +1,4 @@ +function_count_not +badhash +1 +1 diff --git a/llvm/test/tools/llvm-profdata/Inputs/bar3-1.profdata b/llvm/test/tools/llvm-profdata/Inputs/bar3-1.profdata deleted file mode 100644 index cb8b409891a..00000000000 --- a/llvm/test/tools/llvm-profdata/Inputs/bar3-1.profdata +++ /dev/null @@ -1,4 +0,0 @@ -bar 3 -1 -2 -3 diff --git a/llvm/test/tools/llvm-profdata/Inputs/bar3-1.profdata.input b/llvm/test/tools/llvm-profdata/Inputs/bar3-1.profdata.input new file mode 100644 index 00000000000..5486e9d84d7 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/bar3-1.profdata.input @@ -0,0 +1,6 @@ +bar +3 +3 +1 +2 +3 diff --git a/llvm/test/tools/llvm-profdata/Inputs/empty.profdata b/llvm/test/tools/llvm-profdata/Inputs/empty.profdata.input index e69de29bb2d..e69de29bb2d 100644 --- a/llvm/test/tools/llvm-profdata/Inputs/empty.profdata +++ b/llvm/test/tools/llvm-profdata/Inputs/empty.profdata.input diff --git a/llvm/test/tools/llvm-profdata/Inputs/extra-word.profdata b/llvm/test/tools/llvm-profdata/Inputs/extra-word.profdata.input index 67a662909cf..67a662909cf 100644 --- a/llvm/test/tools/llvm-profdata/Inputs/extra-word.profdata +++ b/llvm/test/tools/llvm-profdata/Inputs/extra-word.profdata.input diff --git a/llvm/test/tools/llvm-profdata/Inputs/foo3-1.profdata b/llvm/test/tools/llvm-profdata/Inputs/foo3-1.profdata deleted file mode 100644 index d6f9f648b7b..00000000000 --- a/llvm/test/tools/llvm-profdata/Inputs/foo3-1.profdata +++ /dev/null @@ -1,4 +0,0 @@ -foo 3 -1 -2 -3 diff --git a/llvm/test/tools/llvm-profdata/Inputs/foo3-1.profdata.input b/llvm/test/tools/llvm-profdata/Inputs/foo3-1.profdata.input new file mode 100644 index 00000000000..14a62004357 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/foo3-1.profdata.input @@ -0,0 +1,6 @@ +foo +3 +3 +1 +2 +3 diff --git a/llvm/test/tools/llvm-profdata/Inputs/foo3-2.profdata b/llvm/test/tools/llvm-profdata/Inputs/foo3-2.profdata deleted file mode 100644 index 94fd0343915..00000000000 --- a/llvm/test/tools/llvm-profdata/Inputs/foo3-2.profdata +++ /dev/null @@ -1,4 +0,0 @@ -foo 3 -7 -5 -3 diff --git a/llvm/test/tools/llvm-profdata/Inputs/foo3-2.profdata.input b/llvm/test/tools/llvm-profdata/Inputs/foo3-2.profdata.input new file mode 100644 index 00000000000..801846e4404 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/foo3-2.profdata.input @@ -0,0 +1,6 @@ +foo +3 +3 +7 +5 +3 diff --git a/llvm/test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata b/llvm/test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata deleted file mode 100644 index 85b702d4977..00000000000 --- a/llvm/test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata +++ /dev/null @@ -1,9 +0,0 @@ -foo 3 -2 -3 -5 - -bar 3 -7 -11 -13 diff --git a/llvm/test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata.input b/llvm/test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata.input new file mode 100644 index 00000000000..12157b9f9ad --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata.input @@ -0,0 +1,13 @@ +foo +3 +3 +2 +3 +5 + +bar +3 +3 +7 +11 +13 diff --git a/llvm/test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata b/llvm/test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata.input index d652781a35c..f1f10bd6f3d 100644 --- a/llvm/test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata +++ b/llvm/test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata.input @@ -1,9 +1,13 @@ -foo 3 +foo +3 +3 17 19 23 -bar 3 +bar +3 +3 29 31 37 diff --git a/llvm/test/tools/llvm-profdata/Inputs/foo4-1.profdata b/llvm/test/tools/llvm-profdata/Inputs/foo4-1.profdata.input index 4d694080bff..31d2a2ce756 100644 --- a/llvm/test/tools/llvm-profdata/Inputs/foo4-1.profdata +++ b/llvm/test/tools/llvm-profdata/Inputs/foo4-1.profdata.input @@ -1,4 +1,6 @@ -foo 4 +foo +4 +4 11 22 33 diff --git a/llvm/test/tools/llvm-profdata/Inputs/foo4-2.profdata b/llvm/test/tools/llvm-profdata/Inputs/foo4-2.profdata.input index 8d91d8bbef0..01d8309b5ce 100644 --- a/llvm/test/tools/llvm-profdata/Inputs/foo4-2.profdata +++ b/llvm/test/tools/llvm-profdata/Inputs/foo4-2.profdata.input @@ -1,4 +1,6 @@ -foo 4 +foo +4 +4 7 6 5 diff --git a/llvm/test/tools/llvm-profdata/Inputs/invalid-count-later.profdata b/llvm/test/tools/llvm-profdata/Inputs/invalid-count-later.profdata deleted file mode 100644 index 5575df3fda6..00000000000 --- a/llvm/test/tools/llvm-profdata/Inputs/invalid-count-later.profdata +++ /dev/null @@ -1,2 +0,0 @@ -invalid_count 1 -1later diff --git a/llvm/test/tools/llvm-profdata/Inputs/invalid-count-later.profdata.input b/llvm/test/tools/llvm-profdata/Inputs/invalid-count-later.profdata.input new file mode 100644 index 00000000000..2b61c55a676 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/invalid-count-later.profdata.input @@ -0,0 +1,4 @@ +invalid_count +1 +1 +1later diff --git a/llvm/test/tools/llvm-profdata/Inputs/overflow.profdata b/llvm/test/tools/llvm-profdata/Inputs/overflow.profdata.input index bfb9a52d2ec..c9a9d697ecf 100644 --- a/llvm/test/tools/llvm-profdata/Inputs/overflow.profdata +++ b/llvm/test/tools/llvm-profdata/Inputs/overflow.profdata.input @@ -1,2 +1,4 @@ -overflow 1 +overflow +1 +1 9223372036854775808 diff --git a/llvm/test/tools/llvm-profdata/Inputs/three-words-long.profdata b/llvm/test/tools/llvm-profdata/Inputs/three-words-long.profdata.input index a4d45fb3bfa..a4d45fb3bfa 100644 --- a/llvm/test/tools/llvm-profdata/Inputs/three-words-long.profdata +++ b/llvm/test/tools/llvm-profdata/Inputs/three-words-long.profdata.input diff --git a/llvm/test/tools/llvm-profdata/Inputs/wrong-count.profdata.input b/llvm/test/tools/llvm-profdata/Inputs/wrong-count.profdata.input new file mode 100644 index 00000000000..129db626d14 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/wrong-count.profdata.input @@ -0,0 +1,4 @@ +wrong_count +3 +3 +1 diff --git a/llvm/test/tools/llvm-profdata/errors.test b/llvm/test/tools/llvm-profdata/errors.test deleted file mode 100644 index 6335ea95f9e..00000000000 --- a/llvm/test/tools/llvm-profdata/errors.test +++ /dev/null @@ -1,22 +0,0 @@ -RUN: not llvm-profdata %p/Inputs/empty.profdata %p/Inputs/foo3-1.profdata 2>&1 | FileCheck %s --check-prefix=LENGTH -RUN: not llvm-profdata %p/Inputs/foo3-1.profdata %p/Inputs/foo3bar3-1.profdata 2>&1 | FileCheck %s --check-prefix=LENGTH -RUN: not llvm-profdata %p/Inputs/foo4-1.profdata %p/Inputs/empty.profdata 2>&1 | FileCheck %s --check-prefix=LENGTH -LENGTH: error: {{.*}}: truncated file - -RUN: not llvm-profdata %p/Inputs/foo3-1.profdata %p/Inputs/bar3-1.profdata 2>&1 | FileCheck %s --check-prefix=NAME -NAME: error: {{.*}}: function name mismatch - -RUN: not llvm-profdata %p/Inputs/foo3-1.profdata %p/Inputs/foo4-1.profdata 2>&1 | FileCheck %s --check-prefix=COUNT -COUNT: error: {{.*}}: function count mismatch - -RUN: not llvm-profdata %p/Inputs/overflow.profdata %p/Inputs/overflow.profdata 2>&1 | FileCheck %s --check-prefix=OVERFLOW -OVERFLOW: error: {{.*}}: counter overflow - -RUN: not llvm-profdata %p/Inputs/invalid-count-later.profdata %p/Inputs/invalid-count-later.profdata 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT-LATER -INVALID-COUNT-LATER: error: {{.*}}: invalid counter - -RUN: not llvm-profdata %p/Inputs/bad-function-count.profdata %p/Inputs/bad-function-count.profdata 2>&1 | FileCheck %s --check-prefix=BAD-FUNCTION-COUNT -BAD-FUNCTION-COUNT: error: {{.*}}: bad function count - -RUN: not llvm-profdata %p/Inputs/three-words-long.profdata %p/Inputs/three-words-long.profdata 2>&1 | FileCheck %s --check-prefix=INVALID-DATA -INVALID-DATA: error: {{.*}}: invalid data diff --git a/llvm/test/tools/llvm-profdata/generate.test b/llvm/test/tools/llvm-profdata/generate.test new file mode 100644 index 00000000000..71e8b50fcad --- /dev/null +++ b/llvm/test/tools/llvm-profdata/generate.test @@ -0,0 +1,38 @@ +RUN: llvm-profdata generate %p/Inputs/empty.profdata.input | llvm-profdata show -all-functions -counts - | FileCheck %s --check-prefix=EMPTY + +EMPTY: Total functions: 0 +EMPTY: Maximum function count: 0 +EMPTY: Maximum internal block count: 0 + +RUN: llvm-profdata generate %p/Inputs/foo3-1.profdata.input | llvm-profdata show -all-functions -counts - | FileCheck %s --check-prefix=FOO3 + +FOO3: foo: +FOO3: Counters: 3 +FOO3: Function count: 1 +FOO3: Block counts: [2, 3] +FOO3: Total functions: 1 +FOO3: Maximum function count: 1 +FOO3: Maximum internal block count: 3 + +RUN: llvm-profdata generate %p/Inputs/foo3bar3-1.profdata.input | llvm-profdata show -all-functions -counts - | FileCheck %s --check-prefix=FOO3BAR3 + +FOO3BAR3: foo: +FOO3BAR3: Counters: 3 +FOO3BAR3: Function count: 2 +FOO3BAR3: Block counts: [3, 5] +FOO3BAR3: bar: +FOO3BAR3: Counters: 3 +FOO3BAR3: Function count: 7 +FOO3BAR3: Block counts: [11, 13] +FOO3BAR3: Total functions: 2 +FOO3BAR3: Maximum function count: 7 +FOO3BAR3: Maximum internal block count: 13 + +RUN: not llvm-profdata generate %p/Inputs/invalid-count-later.profdata.input -o /dev/null 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT-LATER +INVALID-COUNT-LATER: error: {{.*}}: Failed to read counter + +RUN: not llvm-profdata generate %p/Inputs/bad-hash.profdata.input -o /dev/null 2>&1 | FileCheck %s --check-prefix=BAD-HASH +BAD-HASH: error: {{.*}}: Failed to read hash + +RUN: not llvm-profdata generate %p/Inputs/wrong-count.profdata.input -o /dev/null 2>&1 | FileCheck %s --check-prefix=BAD-FUNCTION-COUNT +BAD-FUNCTION-COUNT: error: {{.*}}: Truncated file diff --git a/llvm/test/tools/llvm-profdata/merge-errors.test b/llvm/test/tools/llvm-profdata/merge-errors.test new file mode 100644 index 00000000000..1ab08be9f14 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/merge-errors.test @@ -0,0 +1,21 @@ +RUN: llvm-profdata generate %p/Inputs/empty.profdata.input > %t-empty.profdata +RUN: llvm-profdata generate %p/Inputs/foo3-1.profdata.input > %t-foo3-1.profdata +RUN: llvm-profdata generate %p/Inputs/bar3-1.profdata.input > %t-bar3-1.profdata +RUN: llvm-profdata generate %p/Inputs/foo3bar3-1.profdata.input > %t-foo3bar3-1.profdata +RUN: llvm-profdata generate %p/Inputs/foo4-1.profdata.input > %t-foo4-1.profdata + +RUN: not llvm-profdata merge %t-empty.profdata %t-foo3-1.profdata -o /dev/null 2>&1 | FileCheck %s --check-prefix=LENGTH +RUN: not llvm-profdata merge %t-foo3-1.profdata %t-foo3bar3-1.profdata -o /dev/null 2>&1 | FileCheck %s --check-prefix=LENGTH +RUN: not llvm-profdata merge %t-foo4-1.profdata %t-empty.profdata -o /dev/null 2>&1 | FileCheck %s --check-prefix=LENGTH +LENGTH: error: {{.*}}: Truncated file + +RUN: not llvm-profdata merge %t-foo3-1.profdata %t-bar3-1.profdata -o /dev/null 2>&1 | FileCheck %s --check-prefix=NAME +NAME: error: {{.*}}: Function name mismatch + +RUN: not llvm-profdata merge %t-foo3-1.profdata %t-foo4-1.profdata -o /dev/null 2>&1 | FileCheck %s --check-prefix=COUNT +COUNT: error: {{.*}}: Function count mismatch + +RUN: llvm-profdata generate %p/Inputs/overflow.profdata.input > %t-overflow.profdata + +RUN: not llvm-profdata merge %t-overflow.profdata %t-overflow.profdata -o /dev/null 2>&1 | FileCheck %s --check-prefix=OVERFLOW +OVERFLOW: error: {{.*}}: Counter overflow diff --git a/llvm/test/tools/llvm-profdata/simple-merges.test b/llvm/test/tools/llvm-profdata/simple-merges.test new file mode 100644 index 00000000000..401ae6b58e3 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/simple-merges.test @@ -0,0 +1,33 @@ +RUN: llvm-profdata generate %p/Inputs/foo3-1.profdata.input > %t-foo3-1.profdata +RUN: llvm-profdata generate %p/Inputs/foo3-2.profdata.input > %t-foo3-2.profdata + +RUN: llvm-profdata merge %t-foo3-1.profdata %t-foo3-2.profdata 2>&1 | llvm-profdata show -all-functions -counts - | FileCheck %s --check-prefix=FOO3 +RUN: llvm-profdata merge %t-foo3-2.profdata %t-foo3-1.profdata 2>&1 | llvm-profdata show -all-functions -counts - | FileCheck %s --check-prefix=FOO3 +FOO3: foo: +FOO3: Counters: 3 +FOO3: Function count: 8 +FOO3: Block counts: [7, 6] + +RUN: llvm-profdata generate %p/Inputs/foo4-1.profdata.input > %t-foo4-1.profdata +RUN: llvm-profdata generate %p/Inputs/foo4-2.profdata.input > %t-foo4-2.profdata + +RUN: llvm-profdata merge %t-foo4-1.profdata %t-foo4-2.profdata 2>&1 | llvm-profdata show -all-functions -counts - | FileCheck %s --check-prefix=FOO4 +RUN: llvm-profdata merge %t-foo4-2.profdata %t-foo4-1.profdata 2>&1 | llvm-profdata show -all-functions -counts - | FileCheck %s --check-prefix=FOO4 +FOO4: foo: +FOO4: Counters: 4 +FOO4: Function count: 18 +FOO4: Block counts: [28, 38, 48] + +RUN: llvm-profdata generate %p/Inputs/foo3bar3-1.profdata.input > %t-foo3bar3-1.profdata +RUN: llvm-profdata generate %p/Inputs/foo3bar3-2.profdata.input > %t-foo3bar3-2.profdata + +RUN: llvm-profdata merge %t-foo3bar3-1.profdata %t-foo3bar3-2.profdata 2>&1 | llvm-profdata show -all-functions -counts - | FileCheck %s --check-prefix=FOO3BAR3 +RUN: llvm-profdata merge %t-foo3bar3-2.profdata %t-foo3bar3-1.profdata 2>&1 | llvm-profdata show -all-functions -counts - | FileCheck %s --check-prefix=FOO3BAR3 +FOO3BAR3: foo: +FOO3BAR3: Counters: 3 +FOO3BAR3: Function count: 19 +FOO3BAR3: Block counts: [22, 28] +FOO3BAR3: bar: +FOO3BAR3: Counters: 3 +FOO3BAR3: Function count: 36 +FOO3BAR3: Block counts: [42, 50] diff --git a/llvm/test/tools/llvm-profdata/simple.test b/llvm/test/tools/llvm-profdata/simple.test deleted file mode 100644 index 87073fad9cf..00000000000 --- a/llvm/test/tools/llvm-profdata/simple.test +++ /dev/null @@ -1,25 +0,0 @@ -RUN: llvm-profdata %p/Inputs/foo3-1.profdata %p/Inputs/foo3-2.profdata 2>&1 | FileCheck %s --check-prefix=FOO3 -RUN: llvm-profdata %p/Inputs/foo3-2.profdata %p/Inputs/foo3-1.profdata 2>&1 | FileCheck %s --check-prefix=FOO3 -FOO3: {{^foo 3$}} -FOO3-NEXT: {{^8$}} -FOO3-NEXT: {{^7$}} -FOO3-NEXT: {{^6$}} - -RUN: llvm-profdata %p/Inputs/foo4-1.profdata %p/Inputs/foo4-2.profdata 2>&1 | FileCheck %s --check-prefix=FOO4 -RUN: llvm-profdata %p/Inputs/foo4-2.profdata %p/Inputs/foo4-1.profdata 2>&1 | FileCheck %s --check-prefix=FOO4 -FOO4: {{^foo 4$}} -FOO4-NEXT: {{^18$}} -FOO4-NEXT: {{^28$}} -FOO4-NEXT: {{^38$}} -FOO4-NEXT: {{^48$}} - -RUN: llvm-profdata %p/Inputs/foo3bar3-1.profdata %p/Inputs/foo3bar3-2.profdata 2>&1 | FileCheck %s --check-prefix=FOO3BAR3 -RUN: llvm-profdata %p/Inputs/foo3bar3-2.profdata %p/Inputs/foo3bar3-1.profdata 2>&1 | FileCheck %s --check-prefix=FOO3BAR3 -FOO3BAR3: {{^foo 3$}} -FOO3BAR3-NEXT: {{^19$}} -FOO3BAR3-NEXT: {{^22$}} -FOO3BAR3-NEXT: {{^28$}} -FOO3BAR3: {{^bar 3$}} -FOO3BAR3-NEXT: {{^36$}} -FOO3BAR3-NEXT: {{^42$}} -FOO3BAR3-NEXT: {{^50$}} |

