diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-02-17 23:22:49 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-02-17 23:22:49 +0000 |
commit | ddc5a010a40a7b85a020a072f9f6b4ae132e94bd (patch) | |
tree | 147cfb9555bac4adf6f6ef5a9c5cf3a8dcf69b7e /test | |
parent | 4959a2d8780bb6a2424a0bb82df45d5150cef228 (diff) | |
download | llvm-ddc5a010a40a7b85a020a072f9f6b4ae132e94bd.tar.gz llvm-ddc5a010a40a7b85a020a072f9f6b4ae132e94bd.tar.bz2 llvm-ddc5a010a40a7b85a020a072f9f6b4ae132e94bd.tar.xz |
PGO: llvm-profdata: tool for merging profiles
Introducing llvm-profdata, a tool for merging profile data generated by
PGO instrumentation in clang.
- The name indicates a file extension of <name>.profdata. Eventually
profile data output by clang should be changed to that extension.
- llvm-profdata merges two profiles. However, the name is more general,
since it will likely pick up more tasks (such as summarizing a single
profile).
- llvm-profdata parses the current text-based format, but will be
updated once we settle on a binary format.
<rdar://problem/15949645>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201535 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/lit.cfg | 1 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/bad-function-count.profdata | 2 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/bar3-1.profdata | 4 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/empty.profdata | 0 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/extra-word.profdata | 2 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/foo3-1.profdata | 4 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/foo3-2.profdata | 4 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata | 9 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata | 9 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/foo4-1.profdata | 5 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/foo4-2.profdata | 5 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/invalid-count-later.profdata | 2 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/overflow.profdata | 2 | ||||
-rw-r--r-- | test/tools/llvm-profdata/Inputs/three-words-long.profdata | 1 | ||||
-rw-r--r-- | test/tools/llvm-profdata/errors.test | 22 | ||||
-rw-r--r-- | test/tools/llvm-profdata/simple.test | 25 |
17 files changed, 98 insertions, 0 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 835579c8f6..d26d0f3a1a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -37,6 +37,7 @@ set(LLVM_TEST_DEPENDS llvm-mcmarkup llvm-nm llvm-objdump + llvm-profdata llvm-readobj llvm-rtdyld llvm-symbolizer diff --git a/test/lit.cfg b/test/lit.cfg index 962728d0cb..ac8d4497f0 100644 --- a/test/lit.cfg +++ b/test/lit.cfg @@ -234,6 +234,7 @@ for pattern in [r"\bbugpoint\b(?!-)", r"\bllvm-mcmarkup\b", r"\bllvm-nm\b", r"\bllvm-objdump\b", + r"\bllvm-profdata\b", r"\bllvm-ranlib\b", r"\bllvm-readobj\b", r"\bllvm-rtdyld\b", diff --git a/test/tools/llvm-profdata/Inputs/bad-function-count.profdata b/test/tools/llvm-profdata/Inputs/bad-function-count.profdata new file mode 100644 index 0000000000..7d247626e5 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/bad-function-count.profdata @@ -0,0 +1,2 @@ +function_count_not 1count +1 diff --git a/test/tools/llvm-profdata/Inputs/bar3-1.profdata b/test/tools/llvm-profdata/Inputs/bar3-1.profdata new file mode 100644 index 0000000000..cb8b409891 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/bar3-1.profdata @@ -0,0 +1,4 @@ +bar 3 +1 +2 +3 diff --git a/test/tools/llvm-profdata/Inputs/empty.profdata b/test/tools/llvm-profdata/Inputs/empty.profdata new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/empty.profdata diff --git a/test/tools/llvm-profdata/Inputs/extra-word.profdata b/test/tools/llvm-profdata/Inputs/extra-word.profdata new file mode 100644 index 0000000000..67a662909c --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/extra-word.profdata @@ -0,0 +1,2 @@ +extra 1 word +1 diff --git a/test/tools/llvm-profdata/Inputs/foo3-1.profdata b/test/tools/llvm-profdata/Inputs/foo3-1.profdata new file mode 100644 index 0000000000..d6f9f648b7 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/foo3-1.profdata @@ -0,0 +1,4 @@ +foo 3 +1 +2 +3 diff --git a/test/tools/llvm-profdata/Inputs/foo3-2.profdata b/test/tools/llvm-profdata/Inputs/foo3-2.profdata new file mode 100644 index 0000000000..94fd034391 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/foo3-2.profdata @@ -0,0 +1,4 @@ +foo 3 +7 +5 +3 diff --git a/test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata b/test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata new file mode 100644 index 0000000000..85b702d497 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata @@ -0,0 +1,9 @@ +foo 3 +2 +3 +5 + +bar 3 +7 +11 +13 diff --git a/test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata b/test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata new file mode 100644 index 0000000000..d652781a35 --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata @@ -0,0 +1,9 @@ +foo 3 +17 +19 +23 + +bar 3 +29 +31 +37 diff --git a/test/tools/llvm-profdata/Inputs/foo4-1.profdata b/test/tools/llvm-profdata/Inputs/foo4-1.profdata new file mode 100644 index 0000000000..4d694080bf --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/foo4-1.profdata @@ -0,0 +1,5 @@ +foo 4 +11 +22 +33 +44 diff --git a/test/tools/llvm-profdata/Inputs/foo4-2.profdata b/test/tools/llvm-profdata/Inputs/foo4-2.profdata new file mode 100644 index 0000000000..8d91d8bbef --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/foo4-2.profdata @@ -0,0 +1,5 @@ +foo 4 +7 +6 +5 +4 diff --git a/test/tools/llvm-profdata/Inputs/invalid-count-later.profdata b/test/tools/llvm-profdata/Inputs/invalid-count-later.profdata new file mode 100644 index 0000000000..5575df3fda --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/invalid-count-later.profdata @@ -0,0 +1,2 @@ +invalid_count 1 +1later diff --git a/test/tools/llvm-profdata/Inputs/overflow.profdata b/test/tools/llvm-profdata/Inputs/overflow.profdata new file mode 100644 index 0000000000..bfb9a52d2e --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/overflow.profdata @@ -0,0 +1,2 @@ +overflow 1 +9223372036854775808 diff --git a/test/tools/llvm-profdata/Inputs/three-words-long.profdata b/test/tools/llvm-profdata/Inputs/three-words-long.profdata new file mode 100644 index 0000000000..a4d45fb3bf --- /dev/null +++ b/test/tools/llvm-profdata/Inputs/three-words-long.profdata @@ -0,0 +1 @@ +three words long diff --git a/test/tools/llvm-profdata/errors.test b/test/tools/llvm-profdata/errors.test new file mode 100644 index 0000000000..6335ea95f9 --- /dev/null +++ b/test/tools/llvm-profdata/errors.test @@ -0,0 +1,22 @@ +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/test/tools/llvm-profdata/simple.test b/test/tools/llvm-profdata/simple.test new file mode 100644 index 0000000000..87073fad9c --- /dev/null +++ b/test/tools/llvm-profdata/simple.test @@ -0,0 +1,25 @@ +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$}} |