[llvm] r256580 - [PlaceSafepoints] Assert that the gc.safepoint_poll function is present in the module.

Manuel Jacob via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 29 13:57:56 PST 2015

Author: mjacob
Date: Tue Dec 29 15:57:55 2015
New Revision: 256580

URL: http://llvm.org/viewvc/llvm-project?rev=256580&view=rev
[PlaceSafepoints] Assert that the gc.safepoint_poll function is present in the module.

If running the PlaceSafepoints pass on a module which doesn't have the
gc.safepoint_poll function without disabling entry and backedge safepoints,
previously the pass crashed with an obscure error because of a null pointer.
Now it fails the assert instead.


Modified: llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp?rev=256580&r1=256579&r2=256580&view=diff
--- llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp Tue Dec 29 15:57:55 2015
@@ -762,6 +762,7 @@ InsertSafepointPoll(Instruction *InsertB
   // path call - where we need to insert a safepoint (parsepoint).
   auto *F = M->getFunction(GCSafepointPollName);
+  assert(F && "gc.safepoint_poll function is missing");
   assert(F->getType()->getElementType() ==
          FunctionType::get(Type::getVoidTy(M->getContext()), false) &&
          "gc.safepoint_poll declared with wrong type");

More information about the llvm-commits mailing list