diff options
| author | John McCall <rjmccall@apple.com> | 2019-08-14 03:53:31 +0000 | 
|---|---|---|
| committer | John McCall <rjmccall@apple.com> | 2019-08-14 03:53:31 +0000 | 
| commit | 137b50f0c3b1803d3a743cc2b863fe1acb6f62e1 (patch) | |
| tree | dc3e8685a4d9500b1c77812c35408595784f0440 | |
| parent | 382921418554987bb1757964846545b0cfc14a63 (diff) | |
| download | bcm5719-llvm-137b50f0c3b1803d3a743cc2b863fe1acb6f62e1.tar.gz bcm5719-llvm-137b50f0c3b1803d3a743cc2b863fe1acb6f62e1.zip  | |
Guard dumps in the coro intrinsic validation logic behind NDEBUG checks. dump() is not guaranteed to be defined in all builds.
llvm-svn: 368790
| -rw-r--r-- | llvm/lib/Transforms/Coroutines/Coroutines.cpp | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Coroutines/Coroutines.cpp b/llvm/lib/Transforms/Coroutines/Coroutines.cpp index 6239674cc69..af27e54eed1 100644 --- a/llvm/lib/Transforms/Coroutines/Coroutines.cpp +++ b/llvm/lib/Transforms/Coroutines/Coroutines.cpp @@ -360,7 +360,9 @@ void coro::Shape::buildFrom(Function &F) {      for (auto AnySuspend : CoroSuspends) {        auto Suspend = dyn_cast<CoroSuspendInst>(AnySuspend);        if (!Suspend) { +#ifndef NDEBUG          AnySuspend->dump(); +#endif          report_fatal_error("coro.id must be paired with coro.suspend");        } @@ -392,7 +394,9 @@ void coro::Shape::buildFrom(Function &F) {      for (auto AnySuspend : CoroSuspends) {        auto Suspend = dyn_cast<CoroSuspendRetconInst>(AnySuspend);        if (!Suspend) { +#ifndef NDEBUG          AnySuspend->dump(); +#endif          report_fatal_error("coro.id.retcon.* must be paired with "                             "coro.suspend.retcon");        } @@ -402,15 +406,19 @@ void coro::Shape::buildFrom(Function &F) {        auto RI = ResultTys.begin(), RE = ResultTys.end();        for (; SI != SE && RI != RE; ++SI, ++RI) {          if ((*SI)->getType() != *RI) { +#ifndef NDEBUG            Suspend->dump();            Prototype->getFunctionType()->dump(); +#endif            report_fatal_error("argument to coro.suspend.retcon does not "                               "match corresponding prototype function result");          }        }        if (SI != SE || RI != RE) { +#ifndef NDEBUG          Suspend->dump();          Prototype->getFunctionType()->dump(); +#endif          report_fatal_error("wrong number of arguments to coro.suspend.retcon");        } @@ -421,14 +429,18 @@ void coro::Shape::buildFrom(Function &F) {             ? cast<StructType>(SResultTy)->elements()             : SResultTy); // forms an ArrayRef using SResultTy, be careful        if (SuspendResultTys.size() != ResumeTys.size()) { +#ifndef NDEBUG          Suspend->dump();          Prototype->getFunctionType()->dump(); +#endif          report_fatal_error("wrong number of results from coro.suspend.retcon");        }        for (size_t I = 0, E = ResumeTys.size(); I != E; ++I) {          if (SuspendResultTys[I] != ResumeTys[I]) { +#ifndef NDEBUG            Suspend->dump();            Prototype->getFunctionType()->dump(); +#endif            report_fatal_error("result from coro.suspend.retcon does not "                               "match corresponding prototype function param");          } @@ -509,12 +521,14 @@ void coro::Shape::emitDealloc(IRBuilder<> &Builder, Value *Ptr,  LLVM_ATTRIBUTE_NORETURN  static void fail(const Instruction *I, const char *Reason, Value *V) { +#ifndef NDEBUG    I->dump();    if (V) {      errs() << "  Value: ";      V->printAsOperand(llvm::errs());      errs() << '\n';    } +#endif    report_fatal_error(Reason);  }  | 

