The format is currently inconsistent. Use the https://llvm.org/docs/CodingStandards.html#error-and-warning-messages style.
And add `error:` or `warning:` to CHECK lines wherever appropriate.
// WRITE-BUFFER: Maximum function count: 1
// WRITE-BUFFER: Maximum internal block count: 0
-// ALREADY-DUMPED: error: {{.*}} Empty raw profile file
+// ALREADY-DUMPED: error: {{.+}}: empty raw profile file
#include <stdint.h>
#include <stdio.h>
static std::string getInstrProfErrString(instrprof_error Err) {
switch (Err) {
case instrprof_error::success:
- return "Success";
+ return "success";
case instrprof_error::eof:
- return "End of File";
+ return "end of File";
case instrprof_error::unrecognized_format:
- return "Unrecognized instrumentation profile encoding format";
+ return "unrecognized instrumentation profile encoding format";
case instrprof_error::bad_magic:
- return "Invalid instrumentation profile data (bad magic)";
+ return "invalid instrumentation profile data (bad magic)";
case instrprof_error::bad_header:
- return "Invalid instrumentation profile data (file header is corrupt)";
+ return "invalid instrumentation profile data (file header is corrupt)";
case instrprof_error::unsupported_version:
- return "Unsupported instrumentation profile format version";
+ return "unsupported instrumentation profile format version";
case instrprof_error::unsupported_hash_type:
- return "Unsupported instrumentation profile hash type";
+ return "unsupported instrumentation profile hash type";
case instrprof_error::too_large:
- return "Too much profile data";
+ return "too much profile data";
case instrprof_error::truncated:
- return "Truncated profile data";
+ return "truncated profile data";
case instrprof_error::malformed:
- return "Malformed instrumentation profile data";
+ return "malformed instrumentation profile data";
case instrprof_error::invalid_prof:
- return "Invalid profile created. Please file a bug "
+ return "invalid profile created. Please file a bug "
"at: " BUG_REPORT_URL
" and include the profraw files that caused this error.";
case instrprof_error::unknown_function:
- return "No profile data available for function";
+ return "no profile data available for function";
case instrprof_error::hash_mismatch:
- return "Function control flow change detected (hash mismatch)";
+ return "function control flow change detected (hash mismatch)";
case instrprof_error::count_mismatch:
- return "Function basic block count change detected (counter mismatch)";
+ return "function basic block count change detected (counter mismatch)";
case instrprof_error::counter_overflow:
- return "Counter overflow";
+ return "counter overflow";
case instrprof_error::value_site_count_mismatch:
- return "Function value site count change detected (counter mismatch)";
+ return "function value site count change detected (counter mismatch)";
case instrprof_error::compress_failed:
- return "Failed to compress data (zlib)";
+ return "failed to compress data (zlib)";
case instrprof_error::uncompress_failed:
- return "Failed to uncompress data (zlib)";
+ return "failed to uncompress data (zlib)";
case instrprof_error::empty_raw_profile:
- return "Empty raw profile file";
+ return "empty raw profile file";
case instrprof_error::zlib_unavailable:
- return "Profile uses zlib compression but the profile reader was built without zlib support";
+ return "profile uses zlib compression but the profile reader was built "
+ "without zlib support";
}
llvm_unreachable("A value of instrprof_error has no message.");
}
; RUN: opt < %s -pgo-instr-use -pgo-test-profile-file=%t.profdata -S 2>&1 | FileCheck %s
; RUN: opt < %s -passes=pgo-instr-use -pgo-test-profile-file=%t.profdata -S 2>&1 | FileCheck %s
-; CHECK: Function control flow change detected (hash mismatch) foo
+; CHECK: warning: {{.+}}: function control flow change detected (hash mismatch) foo
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
; RUN: opt < %s -pgo-instr-use -pgo-test-profile-file=%t.profdata -S 2>&1 | FileCheck %s --check-prefix=DEFAULT
; RUN: opt < %s -passes=pgo-instr-use -pgo-test-profile-file=%t.profdata -S 2>&1 | FileCheck %s --check-prefix=DEFAULT
-; CHECK: No profile data available for function bar
-; DEFAULT-NOT: No profile data available for function bar
+; CHECK: warning: {{.+}}: no profile data available for function bar
+; DEFAULT-NOT: no profile data available for function bar
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
# The hash matches, but we can't combine these because the number of
# counters differs.
-# MERGE_ERRS: count-mismatch.proftext: foo: Function basic block count change detected (counter mismatch)
+# MERGE_ERRS: count-mismatch.proftext: foo: function basic block count change detected (counter mismatch)
# MERGE_ERRS: Make sure that all profile data to be merged is generated from the same binary.
foo
1024
RUN: echo ":10" >> %t.input
RUN: not llvm-profdata merge %t.input -text -output=/dev/null 2>&1 | FileCheck %s --check-prefix=BROKEN
-BROKEN: warning: {{.*}}invalid-profdata.test.tmp.input: Malformed instrumentation profile data
-BROKEN-NEXT: error: No profiles could be merged.
+BROKEN: warning: {{.*}}invalid-profdata.test.tmp.input: malformed instrumentation profile data
+BROKEN-NEXT: error: no profile can be merged
RUN: echo ":ir" > %t.input
RUN: echo "_ZN6Thread5StartEv" >> %t.input
# RUN: llvm-profdata merge --text -j 4 %s %s %s %s -o %t 2>&1 | FileCheck %s
# RUN: llvm-profdata merge --binary -j 4 %s %s %s %s -o %t 2>&1 | FileCheck %s
# IR level Instrumentation Flag
-# CHECK: Invalid profile
+# CHECK: warning: invalid profile created
:ir
foo
# Func Hash:
RUN: printf '\3\0bar\0\0\0' >> %t.profraw
RUN: not llvm-profdata merge -o /dev/null %t.profraw 2>&1 | FileCheck %s
-CHECK: Malformed instrumentation profile data
+CHECK: warning: {{.+}}: malformed instrumentation profile data
+CHECK: error: no profile can be merged
1- Merge profile having maximum counts with itself and verify overflow detected and saturation occurred
RUN: llvm-profdata merge -instr %p/Inputs/overflow-instr.proftext %p/Inputs/overflow-instr.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=MERGE_OVERFLOW
RUN: llvm-profdata show -instr -all-functions -counts %t.out | FileCheck %s --check-prefix=SHOW_OVERFLOW
-MERGE_OVERFLOW: {{.*}}: overflow: Counter overflow
+MERGE_OVERFLOW: {{.*}}.proftext: overflow: counter overflow
SHOW_OVERFLOW: Function count: 18446744073709551615
SHOW_OVERFLOW-NEXT: Block counts: [18446744073709551615, 18446744073709551615]
2- Merge profile having maximum counts by itself and verify no overflow
RUN: llvm-profdata merge -instr %p/Inputs/overflow-instr.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=MERGE_NO_OVERFLOW -allow-empty
RUN: llvm-profdata show -instr -all-functions -counts %t.out | FileCheck %s --check-prefix=SHOW_NO_OVERFLOW
-MERGE_NO_OVERFLOW-NOT: {{.*}}: overflow: Counter overflow
+MERGE_NO_OVERFLOW-NOT: {{.*}}.proftext: overflow: counter overflow
SHOW_NO_OVERFLOW: Function count: 18446744073709551615
SHOW_NO_OVERFLOW-NEXT: Block counts: [9223372036854775808, 18446744073709551615]
RUN: printf '\377lprofr\201' > %t
RUN: not llvm-profdata show %t 2>&1 | FileCheck %s
-CHECK: error: {{.+}}: Invalid instrumentation profile data (file header is corrupt)
+CHECK: error: {{.+}}: invalid instrumentation profile data (file header is corrupt)
RUN: diff %t-basic.proftext5 %t-basic.proftext6
RUN: not llvm-profdata merge -gcc -o %t-basic-profdata3 %t-basic.proftext2 2>&1 | FileCheck %s --check-prefix=UNKNOWN
-UNKNOWN: Unknown
-
-
+UNKNOWN: unknown format is specified
1- Detect invalid count
RUN: not llvm-profdata show %p/Inputs/invalid-count-later.proftext 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT-LATER-SHOW
-INVALID-COUNT-LATER-SHOW: error: {{.*}}invalid-count-later.proftext: Malformed instrumentation profile data
+INVALID-COUNT-LATER-SHOW: error: {{.*}}invalid-count-later.proftext: malformed instrumentation profile data
RUN: not llvm-profdata merge %p/Inputs/invalid-count-later.proftext %p/Inputs/invalid-count-later.proftext -o %t.out 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT-LATER-MERGE
RUN: not llvm-profdata merge -failure-mode=all %p/Inputs/invalid-count-later.proftext %p/Inputs/invalid-count-later.proftext -o %t.out 2>&1 | FileCheck %s --check-prefix=INVALID-COUNT-LATER-MERGE
-INVALID-COUNT-LATER-MERGE: warning: {{.*}}invalid-count-later.proftext: Malformed instrumentation profile data
-INVALID-COUNT-LATER-MERGE-NEXT: warning: {{.*}}invalid-count-later.proftext: Malformed instrumentation profile data
-INVALID-COUNT-LATER-MERGE-NEXT: error: No profiles could be merged.
+INVALID-COUNT-LATER-MERGE: warning: {{.*}}invalid-count-later.proftext: malformed instrumentation profile data
+INVALID-COUNT-LATER-MERGE-NEXT: warning: {{.*}}invalid-count-later.proftext: malformed instrumentation profile data
+INVALID-COUNT-LATER-MERGE-NEXT: error: no profile can be merged
2- Detect bad hash
RUN: not llvm-profdata show %p/Inputs/bad-hash.proftext 2>&1 | FileCheck %s --check-prefix=BAD-HASH-SHOW
-BAD-HASH-SHOW: error: {{.*}}bad-hash.proftext: Malformed instrumentation profile data
+BAD-HASH-SHOW: error: {{.*}}bad-hash.proftext: malformed instrumentation profile data
RUN: not llvm-profdata merge %p/Inputs/bad-hash.proftext %p/Inputs/bad-hash.proftext -o %t.out 2>&1 | FileCheck %s --check-prefix=BAD-HASH-MERGE
-BAD-HASH-MERGE: warning: {{.*}}bad-hash.proftext: Malformed instrumentation profile data
-BAD-HASH-NEXT: error: No profiles could be merged.
+BAD-HASH-MERGE: warning: {{.*}}bad-hash.proftext: malformed instrumentation profile data
+BAD-HASH-NEXT: error: no profiles can be merged
3- Detect no counts
RUN: not llvm-profdata show %p/Inputs/no-counts.proftext 2>&1 | FileCheck %s --check-prefix=NO-COUNTS
-NO-COUNTS: error: {{.*}}no-counts.proftext: Malformed instrumentation profile data
+NO-COUNTS: error: {{.*}}no-counts.proftext: malformed instrumentation profile data
4- Detect binary input
RUN: not llvm-profdata show %p/Inputs/text-format-errors.text.bin 2>&1 | FileCheck %s --check-prefix=BINARY
-BINARY: error: {{.+}}: Unrecognized instrumentation profile encoding format
+BINARY: error: {{.+}}: unrecognized instrumentation profile encoding format
BINARY: Perhaps you forgot to use the --sample option?
5- Detect malformed value profile data
RUN: not llvm-profdata show %p/Inputs/vp-malform.proftext 2>&1 | FileCheck %s --check-prefix=VP
RUN: not llvm-profdata show %p/Inputs/vp-malform2.proftext 2>&1 | FileCheck %s --check-prefix=VP
-VP: Malformed instrumentation profile data
+VP: error: {{.+}}: malformed instrumentation profile data
6- Detect truncated value profile data
RUN: not llvm-profdata show %p/Inputs/vp-truncate.proftext 2>&1 | FileCheck %s --check-prefix=VPTRUNC
-VPTRUNC: Truncated profile data
+VPTRUNC: error: {{.+}}: truncated profile data
RUN: %S/Inputs/counter-mismatch-4.proftext \
RUN: 2>&1 | FileCheck %s
-CHECK: Function basic block count change detected (counter mismatch)
+CHECK: {{.+}}: foo: function basic block count change detected (counter mismatch)
RUN: not llvm-profdata merge -instr -weighted-input=3,%p/Inputs/weight-instr-bar.profdata -weighted-input=-5,%p/Inputs/weight-instr-foo.profdata -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
RUN: not llvm-profdata merge -instr -weighted-input=3,%p/Inputs/weight-instr-bar.profdata -weighted-input=,%p/Inputs/weight-instr-foo.profdata -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
RUN: not llvm-profdata merge -instr -weighted-input=3,%p/Inputs/weight-instr-bar.profdata -weighted-input=%p/Inputs/weight-instr-foo.profdata -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
-INVALID_WEIGHT: error: Input weight must be a positive integer.
+INVALID_WEIGHT: error: input weight must be a positive integer
4- Bad merge: input path does not exist
RUN: not llvm-profdata merge -instr -weighted-input=3,%p/Inputs/does-not-exist.profdata -weighted-input=2,%p/Inputs/does-not-exist-either.profdata -o %t.out 2>&1 | FileCheck -DMSG=%errc_ENOENT %s -check-prefix=INVALID_INPUT
5- No inputs
RUN: not llvm-profdata merge -instr -o %t.out 2>&1 | FileCheck %s -check-prefix=NO_INPUT
-NO_INPUT: {{.*}}: No input files specified. See llvm-profdata{{(\.EXE|\.exe)?}} merge -help
+NO_INPUT: error: no input files specified. See llvm-profdata{{(\.EXE|\.exe)?}} merge -help
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=-5,%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=,%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/weight-sample-bar.proftext -weighted-input=%p/Inputs/weight-sample-foo.proftext -o %t.out 2>&1 | FileCheck %s -check-prefix=INVALID_WEIGHT
-INVALID_WEIGHT: error: Input weight must be a positive integer.
+INVALID_WEIGHT: error: input weight must be a positive integer
4- Bad merge: input path does not exist
RUN: not llvm-profdata merge -sample -weighted-input=3,%p/Inputs/does-not-exist.proftext -weighted-input=2,%p/Inputs/does-not-exist-either.proftext -o %t.out 2>&1 | FileCheck -DMSG=%errc_ENOENT %s -check-prefix=INVALID_INPUT
5- No inputs
RUN: not llvm-profdata merge -sample -o %t.out 2>&1 | FileCheck %s -check-prefix=NO_INPUT
-NO_INPUT: {{.*}}: No input files specified. See llvm-profdata{{(\.EXE|\.exe)?}} merge -help
+NO_INPUT: {{.*}}: no input files specified. See llvm-profdata{{(\.EXE|\.exe)?}} merge -help
ProfileFormat OutputFormat, bool OutputSparse,
unsigned NumThreads, FailureMode FailMode) {
if (OutputFilename.compare("-") == 0)
- exitWithError("Cannot write indexed profdata format to stdout.");
+ exitWithError("cannot write indexed profdata format to stdout");
if (OutputFormat != PF_Binary && OutputFormat != PF_Compact_Binary &&
OutputFormat != PF_Ext_Binary && OutputFormat != PF_Text)
- exitWithError("Unknown format is specified.");
+ exitWithError("unknown format is specified");
std::mutex ErrorLock;
SmallSet<instrprof_error, 4> WriterErrorCodes;
}
if (NumErrors == Inputs.size() ||
(NumErrors > 0 && FailMode == failIfAnyAreInvalid))
- exitWithError("No profiles could be merged.");
+ exitWithError("no profile can be merged");
writeInstrProfile(OutputFilename, OutputFormat, Contexts[0]->Writer);
}
unsigned SupplMinSizeThreshold, float ZeroCounterThreshold,
unsigned InstrProfColdThreshold) {
if (OutputFilename.compare("-") == 0)
- exitWithError("Cannot write indexed profdata format to stdout.");
+ exitWithError("cannot write indexed profdata format to stdout");
if (Inputs.size() != 1)
- exitWithError("Expect one input to be an instr profile.");
+ exitWithError("expect one input to be an instr profile");
if (Inputs[0].Weight != 1)
- exitWithError("Expect instr profile doesn't have weight.");
+ exitWithError("expect instr profile doesn't have weight");
StringRef InstrFilename = Inputs[0].Filename;
uint64_t Weight;
if (WeightStr.getAsInteger(10, Weight) || Weight < 1)
- exitWithError("Input weight must be a positive integer.");
+ exitWithError("input weight must be a positive integer");
return {std::string(FileName), Weight};
}
parseInputFilenamesFile(Buffer.get(), WeightedInputs);
if (WeightedInputs.empty())
- exitWithError("No input files specified. See " +
+ exitWithError("no input files specified. See " +
sys::path::filename(argv[0]) + " -help");
if (DumpInputFileList) {
OverlapStats Overlap;
Error E = Overlap.accumulateCounts(BaseFilename, TestFilename, IsCS);
if (E)
- exitWithError(std::move(E), "Error in getting profile count sums");
+ exitWithError(std::move(E), "error in getting profile count sums");
if (Overlap.Base.CountSum < 1.0f) {
OS << "Sum of edge counts for profile " << BaseFilename << " is 0.\n";
exit(0);