summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-02-17 23:22:49 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-02-17 23:22:49 +0000
commitddc5a010a40a7b85a020a072f9f6b4ae132e94bd (patch)
tree147cfb9555bac4adf6f6ef5a9c5cf3a8dcf69b7e /test
parent4959a2d8780bb6a2424a0bb82df45d5150cef228 (diff)
downloadllvm-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.txt1
-rw-r--r--test/lit.cfg1
-rw-r--r--test/tools/llvm-profdata/Inputs/bad-function-count.profdata2
-rw-r--r--test/tools/llvm-profdata/Inputs/bar3-1.profdata4
-rw-r--r--test/tools/llvm-profdata/Inputs/empty.profdata0
-rw-r--r--test/tools/llvm-profdata/Inputs/extra-word.profdata2
-rw-r--r--test/tools/llvm-profdata/Inputs/foo3-1.profdata4
-rw-r--r--test/tools/llvm-profdata/Inputs/foo3-2.profdata4
-rw-r--r--test/tools/llvm-profdata/Inputs/foo3bar3-1.profdata9
-rw-r--r--test/tools/llvm-profdata/Inputs/foo3bar3-2.profdata9
-rw-r--r--test/tools/llvm-profdata/Inputs/foo4-1.profdata5
-rw-r--r--test/tools/llvm-profdata/Inputs/foo4-2.profdata5
-rw-r--r--test/tools/llvm-profdata/Inputs/invalid-count-later.profdata2
-rw-r--r--test/tools/llvm-profdata/Inputs/overflow.profdata2
-rw-r--r--test/tools/llvm-profdata/Inputs/three-words-long.profdata1
-rw-r--r--test/tools/llvm-profdata/errors.test22
-rw-r--r--test/tools/llvm-profdata/simple.test25
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$}}