]> granicus.if.org Git - llvm/commitdiff
[RewriteStatepointsForGC] Avoid inserting empty holder
authorPhilip Reames <listmail@philipreames.com>
Mon, 13 Apr 2015 19:07:47 +0000 (19:07 +0000)
committerPhilip Reames <listmail@philipreames.com>
Mon, 13 Apr 2015 19:07:47 +0000 (19:07 +0000)
We use dummy calls to adjust the liveness of values over statepoints in the midst of the insertion.  If there are no values which need held live, there's no point in actually inserting the holder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234779 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/RewriteStatepointsForGC.cpp

index 47d6ffb3064ed1db26647c43e84f760101744429..8c2cb35566811bedfe7c1c7f6b015f916bc10895 100644 (file)
@@ -1571,6 +1571,10 @@ static Function *getUseHolder(Module &M) {
 /// liftetime of the call.
 static void insertUseHolderAfter(CallSite &CS, const ArrayRef<Value *> Values,
                                  SmallVectorImpl<CallInst *> &holders) {
+  if (Values.empty())
+    // No values to hold live, might as well not insert the empty holder
+    return;
+
   Module *M = CS.getInstruction()->getParent()->getParent()->getParent();
   Function *Func = getUseHolder(*M);
   if (CS.isCall()) {