summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-opt-fuzzer
diff options
context:
space:
mode:
authorFedor Sergeev <fedor.sergeev@azul.com>2018-10-17 10:36:23 +0000
committerFedor Sergeev <fedor.sergeev@azul.com>2018-10-17 10:36:23 +0000
commitbd6b2138b94a47a9226ec1e69bf3be55a47fd1ef (patch)
treede58f3925965bf772e2becdad7ff066b456d90ed /llvm/tools/llvm-opt-fuzzer
parent8a08412533536cf433097817e9f155a4ce68252b (diff)
downloadbcm5719-llvm-bd6b2138b94a47a9226ec1e69bf3be55a47fd1ef.tar.gz
bcm5719-llvm-bd6b2138b94a47a9226ec1e69bf3be55a47fd1ef.zip
[NewPM] teach -passes= to emit meaningful error messages
All the PassBuilder::parse interfaces now return descriptive StringError instead of a plain bool. It allows to make -passes/aa-pipeline parsing errors context-specific and thus less confusing. TODO: ideally we should also make suggestions for misspelled pass names, but that requires some extensions to PassBuilder. Reviewed By: philip.pfaffe, chandlerc Differential Revision: https://reviews.llvm.org/D53246 llvm-svn: 344685
Diffstat (limited to 'llvm/tools/llvm-opt-fuzzer')
-rw-r--r--llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp b/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
index 98d5428ddd1..57e75b1db9e 100644
--- a/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
+++ b/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
@@ -144,9 +144,10 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
PB.registerLoopAnalyses(LAM);
PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
- bool Ok = PB.parsePassPipeline(MPM, PassPipeline, false, false);
- assert(Ok && "Should have been checked during fuzzer initialization");
- (void)Ok; // silence unused variable warning on release builds
+ auto Err = PB.parsePassPipeline(MPM, PassPipeline, false, false);
+ assert(!Err && "Should have been checked during fuzzer initialization");
+ // Only fail with assert above, otherwise ignore the parsing error.
+ consumeError(std::move(Err));
// Run passes which we need to test
//
@@ -235,8 +236,8 @@ extern "C" LLVM_ATTRIBUTE_USED int LLVMFuzzerInitialize(
PassBuilder PB(TM.get());
ModulePassManager MPM;
- if (!PB.parsePassPipeline(MPM, PassPipeline, false, false)) {
- errs() << *argv[0] << ": can't parse pass pipeline\n";
+ if (auto Err = PB.parsePassPipeline(MPM, PassPipeline, false, false)) {
+ errs() << *argv[0] << ": " << toString(std::move(Err)) << "\n";
exit(1);
}
OpenPOWER on IntegriCloud