mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
78dfceef4b
Add a "-j" option to llvm-profdata to control the number of threads used. Auto-detect NumThreads when it isn't specified, and avoid spawning threads when they wouldn't be beneficial. I tested this patch using a raw profile produced by clang (147MB). Here is the time taken to merge 4 copies together on my laptop: No thread pool: 112.87s user 5.92s system 97% cpu 2:01.08 total With 2 threads: 134.99s user 26.54s system 164% cpu 1:33.31 total Changes since the initial commit: - When handling odd-length inputs, call ThreadPool::wait() before merging the last profile. Should fix a race/off-by-one (see r275937). Differential Revision: https://reviews.llvm.org/D22438 llvm-svn: 275938
94 lines
4.3 KiB
Plaintext
94 lines
4.3 KiB
Plaintext
Some very basic tests for the multiple input cases.
|
|
|
|
RUN: llvm-profdata merge %p/Inputs/foo3-1.proftext %p/Inputs/foo3-2.proftext -o %t
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3
|
|
RUN: llvm-profdata merge %p/Inputs/foo3-2.proftext %p/Inputs/foo3-1.proftext -o %t
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3
|
|
FOO3: foo:
|
|
FOO3: Counters: 3
|
|
FOO3: Function count: 8
|
|
FOO3: Block counts: [7, 6]
|
|
FOO3: Total functions: 1
|
|
FOO3: Maximum function count: 8
|
|
FOO3: Maximum internal block count: 7
|
|
|
|
RUN: llvm-profdata merge %p/Inputs/empty.proftext %p/Inputs/foo3-1.proftext -o %t
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3EMPTY
|
|
FOO3EMPTY: foo:
|
|
FOO3EMPTY: Counters: 3
|
|
FOO3EMPTY: Function count: 1
|
|
FOO3EMPTY: Block counts: [2, 3]
|
|
FOO3EMPTY: Total functions: 1
|
|
FOO3EMPTY: Maximum function count: 1
|
|
FOO3EMPTY: Maximum internal block count: 3
|
|
|
|
RUN: llvm-profdata merge %p/Inputs/foo3-1.proftext %p/Inputs/foo3bar3-1.proftext -o %t
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3FOO3BAR3 --check-prefix=FOO3FOO3BAR3-1
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO3FOO3BAR3 --check-prefix=FOO3FOO3BAR3-2
|
|
FOO3FOO3BAR3-1: foo:
|
|
FOO3FOO3BAR3-1: Counters: 3
|
|
FOO3FOO3BAR3-1: Function count: 3
|
|
FOO3FOO3BAR3-1: Block counts: [5, 8]
|
|
FOO3FOO3BAR3-2: bar:
|
|
FOO3FOO3BAR3-2: Counters: 3
|
|
FOO3FOO3BAR3-2: Function count: 7
|
|
FOO3FOO3BAR3-2: Block counts: [11, 13]
|
|
FOO3FOO3BAR3: Total functions: 2
|
|
FOO3FOO3BAR3: Maximum function count: 7
|
|
FOO3FOO3BAR3: Maximum internal block count: 13
|
|
|
|
RUN: llvm-profdata merge %p/Inputs/foo3-1.proftext %p/Inputs/bar3-1.proftext -o %t
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=DISJOINT --check-prefix=DISJOINT-1
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=DISJOINT --check-prefix=DISJOINT-2
|
|
DISJOINT-1: foo:
|
|
DISJOINT-1: Counters: 3
|
|
DISJOINT-1: Function count: 1
|
|
DISJOINT-1: Block counts: [2, 3]
|
|
DISJOINT-2: bar:
|
|
DISJOINT-2: Counters: 3
|
|
DISJOINT-2: Function count: 1
|
|
DISJOINT-2: Block counts: [2, 3]
|
|
DISJOINT: Total functions: 2
|
|
DISJOINT: Maximum function count: 1
|
|
DISJOINT: Maximum internal block count: 3
|
|
|
|
RUN: llvm-profdata merge %p/Inputs/foo3-1.proftext %p/Inputs/foo3-1.proftext \
|
|
RUN: %p/Inputs/foo3-1.proftext %p/Inputs/foo3-1.proftext \
|
|
RUN: -num-threads 2 -o %t
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO4
|
|
RUN: llvm-profdata merge %p/Inputs/foo3-1.proftext %p/Inputs/foo3-1.proftext \
|
|
RUN: %p/Inputs/foo3-1.proftext %p/Inputs/foo3-1.proftext \
|
|
RUN: -j 3 -o %t
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO4
|
|
FOO4: foo:
|
|
FOO4: Counters: 3
|
|
FOO4: Function count: 4
|
|
FOO4: Block counts: [8, 12]
|
|
FOO4: Total functions: 1
|
|
FOO4: Maximum function count: 4
|
|
FOO4: Maximum internal block count: 12
|
|
|
|
RUN: llvm-profdata merge %p/Inputs/foo3-1.proftext %p/Inputs/foo3-1.proftext \
|
|
RUN: %p/Inputs/foo3-1.proftext %p/Inputs/foo3-1.proftext \
|
|
RUN: %p/Inputs/foo3-1.proftext -j 2 -o %t
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO5
|
|
RUN: llvm-profdata merge %p/Inputs/foo3-1.proftext %p/Inputs/foo3-1.proftext \
|
|
RUN: %p/Inputs/foo3-1.proftext %p/Inputs/foo3-1.proftext \
|
|
RUN: %p/Inputs/foo3-1.proftext -j 3 -o %t
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO5
|
|
RUN: llvm-profdata merge %p/Inputs/foo3-1.proftext %p/Inputs/foo3-1.proftext \
|
|
RUN: %p/Inputs/foo3-1.proftext %p/Inputs/foo3-1.proftext \
|
|
RUN: %p/Inputs/foo3-1.proftext -o %t
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO5
|
|
RUN: llvm-profdata merge %p/Inputs/foo3-1.proftext %p/Inputs/foo3-1.proftext \
|
|
RUN: %p/Inputs/foo3-1.proftext %p/Inputs/foo3-1.proftext \
|
|
RUN: %p/Inputs/foo3-1.proftext -j 1 -o %t
|
|
RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s --check-prefix=FOO5
|
|
FOO5: foo:
|
|
FOO5: Counters: 3
|
|
FOO5: Function count: 5
|
|
FOO5: Block counts: [10, 15]
|
|
FOO5: Total functions: 1
|
|
FOO5: Maximum function count: 5
|
|
FOO5: Maximum internal block count: 15
|