-
Notifications
You must be signed in to change notification settings - Fork 10.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
llvm-profdata] Handle the cases of overlapping input file and output …
…file Currently llvm-profdata does not expect the same file name for the input profile and the output profile. >llvm-profdata merge A.profraw B.profraw -o B.profraw The above command runs successfully but the resulted B.profraw is not correct. This patch fixes the issue by moving the initialization of writer after loading the profile. For the show command, the following will report a confusing error of "Empty raw profile file": >llvm-profdata show B.profraw -o B.profraw It's harder to fix as we need to output something before loading the input profile. I don't think that a fix for this is worth the effort. I just make the error explicit for the show command. Differential Revision: https://reviews.llvm.org/D64360 llvm-svn: 365386
- Loading branch information
Showing
6 changed files
with
96 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# IR level Instrumentation Flag | ||
:ir | ||
main | ||
# Func Hash: | ||
12884901887 | ||
# Num Counters: | ||
1 | ||
# Counter Values: | ||
1 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# IR level Instrumentation Flag | ||
:ir | ||
main | ||
# Func Hash: | ||
12884901887 | ||
# Num Counters: | ||
1 | ||
# Counter Values: | ||
2 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
_Z3bari:20301:1437 | ||
1: 1437 | ||
_Z3fooi:7711:610 | ||
1: 610 | ||
main:184019:0 | ||
4: 534 | ||
4.2: 534 | ||
5: 1075 | ||
5.1: 1075 | ||
6: 2080 | ||
7: 534 | ||
9: 2064 _Z3bari:1471 _Z3fooi:631 | ||
10: inline1:1000 | ||
1: 1000 | ||
10: inline2:2000 | ||
1: 2000 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
_Z3bari:40602:2874 | ||
1: 2874 | ||
_Z3fooi:15422:1220 | ||
1: 1220 | ||
main:368038:0 | ||
4: 1068 | ||
4.2: 1068 | ||
5: 2150 | ||
5.1: 2150 | ||
6: 4160 | ||
7: 1068 | ||
9: 4128 _Z3bari:2942 _Z3fooi:1262 | ||
10: inline1:2000 | ||
1: 2000 | ||
10: inline2:4000 | ||
1: 4000 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
Test the input file names overlap with the output file names. | ||
|
||
This is OK for merging instrument profiles. | ||
RUN: cp %S/Inputs/same-name-1.proftext %t.0.proftext | ||
RUN: llvm-profdata merge -o %t.0.proftext -text %t.0.proftext %t.0.proftext | ||
RUN: llvm-profdata show -counts -all-functions %t.0.proftext -o %t_show_0 | ||
RUN: llvm-profdata show -counts -all-functions %S/Inputs/same-name-2.proftext -o %t_show_1 | ||
RUN: diff %t_show_0 %t_show_1 | ||
RUN: llvm-profdata merge -o %t.1.profdata %S/Inputs/same-name-1.proftext | ||
RUN: llvm-profdata merge -o %t.1.profdata %t.1.profdata %t.1.profdata | ||
RUN: llvm-profdata show -counts -all-functions %t.1.profdata -o %t_show_2 | ||
RUN: diff %t_show_2 %t_show_1 | ||
|
||
We report error for the show command. | ||
RUN: not llvm-profdata show -o %t.1.profdata %t.1.profdata 2>&1 | FileCheck %s | ||
CHECK: llvm-profdata show: Input file name cannot be the same as the output file name! | ||
|
||
This is OK for merging sample fdo profiles. | ||
RUN: cp %S/Inputs/same-name-3.proftext %t.3.proftext | ||
RUN: llvm-profdata merge --sample -o %t.3.proftext -text %t.3.proftext %t.3.proftext | ||
RUN: llvm-profdata show --sample -counts -all-functions %t.3.proftext -o %t_show_3 | ||
RUN: llvm-profdata show --sample -counts -all-functions %S/Inputs/same-name-4.proftext -o %t_show_4 | ||
RUN: diff %t_show_3 %t_show_4 | ||
RUN: llvm-profdata merge --sample -o %t.5.profdata %S/Inputs/same-name-3.proftext | ||
RUN: llvm-profdata merge --sample -o %t.5.profdata %t.5.profdata %t.5.profdata | ||
RUN: llvm-profdata show --sample -counts -all-functions %t.5.profdata -o %t_show_6 | ||
RUN: diff %t_show_6 %t_show_4 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters