From 4ccee6b37737ef2b747120e07ab304d07e5f2078 Mon Sep 17 00:00:00 2001 From: Philip Reames Date: Tue, 21 Jul 2015 19:04:38 +0000 Subject: [PATCH] [RewriteStatepointsForGC] minor style cleanup Use a named lambda for readability, common some code, remove a stale comments, and use llvm style variable names. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242827 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../Scalar/RewriteStatepointsForGC.cpp | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp b/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp index 5cd4a511c97..352beffa4a0 100644 --- a/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp +++ b/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp @@ -835,31 +835,32 @@ static Value *findBasePointer(Value *I, DefiningValueMapTy &cache) { std::sort(Keys.begin(), Keys.end(), order_by_name); // TODO: adjust naming patterns to avoid this order of iteration dependency for (Value *V : Keys) { - Instruction *v = cast(V); - PhiState state = states[V]; - assert(!isKnownBaseResult(v) && "why did it get added?"); - assert(!state.isUnknown() && "Optimistic algorithm didn't complete!"); - if (!state.isConflict()) + Instruction *I = cast(V); + PhiState State = states[I]; + assert(!isKnownBaseResult(I) && "why did it get added?"); + assert(!State.isUnknown() && "Optimistic algorithm didn't complete!"); + if (!State.isConflict()) continue; - if (isa(v)) { - int num_preds = - std::distance(pred_begin(v->getParent()), pred_end(v->getParent())); - assert(num_preds > 0 && "how did we reach here"); - PHINode *phi = PHINode::Create(v->getType(), num_preds, "base_phi", v); - // Add metadata marking this as a base value - phi->setMetadata("is_base_value", MDNode::get(v->getContext(), {})); - states[v] = PhiState(PhiState::Conflict, phi); - } else { - SelectInst *sel = cast(v); + /// Create and insert a new instruction which will represent the base of + /// the given instruction 'I'. + auto MakeBaseInstPlaceholder = [](Instruction *I) -> Instruction* { + if (isa(I)) { + BasicBlock *BB = I->getParent(); + int NumPreds = std::distance(pred_begin(BB), pred_end(BB)); + assert(NumPreds > 0 && "how did we reach here"); + return PHINode::Create(I->getType(), NumPreds, "base_phi", I); + } + SelectInst *Sel = cast(I); // The undef will be replaced later - UndefValue *undef = UndefValue::get(sel->getType()); - SelectInst *basesel = SelectInst::Create(sel->getCondition(), undef, - undef, "base_select", sel); - // Add metadata marking this as a base value - basesel->setMetadata("is_base_value", MDNode::get(v->getContext(), {})); - states[v] = PhiState(PhiState::Conflict, basesel); - } + UndefValue *Undef = UndefValue::get(Sel->getType()); + return SelectInst::Create(Sel->getCondition(), Undef, + Undef, "base_select", Sel); + }; + Instruction *BaseInst = MakeBaseInstPlaceholder(I); + // Add metadata marking this as a base value + BaseInst->setMetadata("is_base_value", MDNode::get(I->getContext(), {})); + states[I] = PhiState(PhiState::Conflict, BaseInst); } // Fixup all the inputs of the new PHIs @@ -1304,10 +1305,8 @@ makeStatepointExplicitImpl(const CallSite &CS, /* to replace */ unwindBlock->getLandingPadInst(), idx, "relocate_token")); result.UnwindToken = exceptional_token; - // Just throw away return value. We will use the one we got for normal - // block. - (void)CreateGCRelocates(liveVariables, live_start, basePtrs, - exceptional_token, Builder); + CreateGCRelocates(liveVariables, live_start, basePtrs, + exceptional_token, Builder); // Generate gc relocates and returns for normal block BasicBlock *normalDest = toReplace->getNormalDest(); -- 2.34.1