From 3d31aca99923e138766dad27469fd6d3a6ebf92a Mon Sep 17 00:00:00 2001 From: Sanjoy Das Date: Tue, 20 Oct 2015 01:06:28 +0000 Subject: [PATCH] [RS4GC] Clean up `find_index`; NFC - Bring it up to the LLVM Coding Style - Sink it inside `CreateGCRelocates`, which is its only user git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250785 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../Scalar/RewriteStatepointsForGC.cpp | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp b/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp index db8254cff64..2001b071f78 100644 --- a/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp +++ b/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp @@ -1263,14 +1263,6 @@ normalizeForInvokeSafepoint(BasicBlock *BB, BasicBlock *InvokeParent, return Ret; } -static int find_index(ArrayRef livevec, Value *val) { - auto itr = std::find(livevec.begin(), livevec.end(), val); - assert(livevec.end() != itr); - size_t index = std::distance(livevec.begin(), itr); - assert(index < livevec.size()); - return index; -} - // Create new attribute set containing only attributes which can be transferred // from original call to the safepoint. static AttributeSet legalizeCallAttributes(AttributeSet AS) { @@ -1325,7 +1317,15 @@ static void CreateGCRelocates(ArrayRef LiveVariables, IRBuilder<> Builder) { if (LiveVariables.empty()) return; - + + auto FindIndex = [](ArrayRef LiveVec, Value *Val) { + auto ValIt = std::find(LiveVec.begin(), LiveVec.end(), Val); + assert(ValIt != LiveVec.end() && "Val not found in LiveVec!"); + size_t Index = std::distance(LiveVec.begin(), ValIt); + assert(Index < LiveVec.size() && "Bug in std::find?"); + return Index; + }; + // All gc_relocate are set to i8 addrspace(1)* type. We originally generated // unique declarations for each pointer type, but this proved problematic // because the intrinsic mangling code is incomplete and fragile. Since @@ -1341,9 +1341,9 @@ static void CreateGCRelocates(ArrayRef LiveVariables, for (unsigned i = 0; i < LiveVariables.size(); i++) { // Generate the gc.relocate call and save the result Value *BaseIdx = - Builder.getInt32(LiveStart + find_index(LiveVariables, BasePtrs[i])); + Builder.getInt32(LiveStart + FindIndex(LiveVariables, BasePtrs[i])); Value *LiveIdx = - Builder.getInt32(LiveStart + find_index(LiveVariables, LiveVariables[i])); + Builder.getInt32(LiveStart + FindIndex(LiveVariables, LiveVariables[i])); // only specify a debug name if we can give a useful one CallInst *Reloc = Builder.CreateCall( -- 2.34.1