Home
last modified time | relevance | path

Searched refs:BB (Results 1 – 25 of 372) sorted by relevance

12345678910>>...15

/freebsd-9-stable/contrib/llvm/lib/Target/Mips/
DMips16ISelLowering.cpp168 MachineBasicBlock *BB) const { in EmitInstrWithCustomInserter()
171 return MipsTargetLowering::EmitInstrWithCustomInserter(MI, BB); in EmitInstrWithCustomInserter()
173 return emitSel16(Mips::BeqzRxImm16, MI, BB); in EmitInstrWithCustomInserter()
175 return emitSel16(Mips::BnezRxImm16, MI, BB); in EmitInstrWithCustomInserter()
177 return emitSeliT16(Mips::Bteqz16, Mips::CmpiRxImmX16, MI, BB); in EmitInstrWithCustomInserter()
179 return emitSeliT16(Mips::Bteqz16, Mips::SltiRxImmX16, MI, BB); in EmitInstrWithCustomInserter()
181 return emitSeliT16(Mips::Bteqz16, Mips::SltiuRxImmX16, MI, BB); in EmitInstrWithCustomInserter()
183 return emitSeliT16(Mips::Btnez16, Mips::CmpiRxImmX16, MI, BB); in EmitInstrWithCustomInserter()
185 return emitSeliT16(Mips::Btnez16, Mips::SltiRxImmX16, MI, BB); in EmitInstrWithCustomInserter()
187 return emitSeliT16(Mips::Btnez16, Mips::SltiuRxImmX16, MI, BB); in EmitInstrWithCustomInserter()
[all …]
/freebsd-9-stable/contrib/llvm/include/llvm/Analysis/
DBlockFrequencyImpl.h53 std::string getBlockName(BasicBlock *BB) const { in getBlockName() argument
54 return BB->getName().str(); in getBlockName()
62 if (const BasicBlock *BB = MBB->getBasicBlock()) in getBlockName() local
63 ss << " derived from LLVM BB " << BB->getName(); in getBlockName()
68 void setBlockFreq(BlockT *BB, BlockFrequency Freq) { in setBlockFreq() argument
69 Freqs[BB] = Freq; in setBlockFreq()
70 DEBUG(dbgs() << "Frequency(" << getBlockName(BB) << ") = " << Freq << "\n"); in setBlockFreq()
82 void incBlockFreq(BlockT *BB, BlockFrequency Freq) { in incBlockFreq() argument
83 Freqs[BB] += Freq; in incBlockFreq()
84 DEBUG(dbgs() << "Frequency(" << getBlockName(BB) << ") += " << Freq in incBlockFreq()
[all …]
DLoopInfo.h112 bool contains(const BlockT *BB) const { in contains() argument
113 return DenseBlockSet.count(BB); in contains()
151 bool isLoopExiting(const BlockT *BB) const { in isLoopExiting() argument
154 BlockTraits::child_begin(BB), in isLoopExiting()
155 SE = BlockTraits::child_end(BB); SI != SE; ++SI) { in isLoopExiting()
273 void addBlockEntry(BlockT *BB) { in addBlockEntry() argument
274 Blocks.push_back(BB); in addBlockEntry()
275 DenseBlockSet.insert(BB); in addBlockEntry()
291 void moveToHeader(BlockT *BB) { in moveToHeader() argument
292 if (Blocks[0] == BB) return; in moveToHeader()
[all …]
DLoopIterator.h84 bool hasPreorder(BasicBlock *BB) const { return PostNumbers.count(BB); } in hasPreorder() argument
87 bool hasPostorder(BasicBlock *BB) const { in hasPostorder() argument
88 DenseMap<BasicBlock*, unsigned>::const_iterator I = PostNumbers.find(BB); in hasPostorder()
93 unsigned getPostorder(BasicBlock *BB) const { in getPostorder() argument
94 DenseMap<BasicBlock*, unsigned>::const_iterator I = PostNumbers.find(BB); in getPostorder()
101 unsigned getRPO(BasicBlock *BB) const { in getRPO() argument
102 return 1 + PostBlocks.size() - getPostorder(BB); in getRPO()
118 void finishPostorder(BasicBlock *BB);
153 bool visitPreorder(BasicBlock *BB) { in visitPreorder() argument
154 if (!DFS.L->contains(LI->getLoopFor(BB))) in visitPreorder()
[all …]
/freebsd-9-stable/contrib/llvm/lib/CodeGen/
DIfConversion.cpp121 MachineBasicBlock *BB; member
130 ExtraCost(0), ExtraCost2(0), BB(0), TrueBB(0), FalseBB(0) {} in BBInfo()
194 BBInfo &AnalyzeBlock(MachineBasicBlock *BB,
199 void InvalidatePreds(MachineBasicBlock *BB);
214 bool MeetIfcvtSizeLimit(MachineBasicBlock &BB, in MeetIfcvtSizeLimit() argument
217 return Cycle > 0 && TII->isProfitableToIfCvt(BB, Cycle, Extra, in MeetIfcvtSizeLimit()
253 return C1->BBI.BB->getNumber() < C2->BBI.BB->getNumber(); in IfcvtTokenCmp()
342 << "): BB#" << BBI.BB->getNumber() << " (" in INITIALIZE_PASS_DEPENDENCY()
369 DEBUG(dbgs() << "): BB#" << BBI.BB->getNumber() << " (T:" in INITIALIZE_PASS_DEPENDENCY()
387 DEBUG(dbgs() << "Ifcvt (Diamond): BB#" << BBI.BB->getNumber() << " (T:" in INITIALIZE_PASS_DEPENDENCY()
[all …]
DMachineSSAUpdater.cpp62 bool MachineSSAUpdater::HasValueForBlock(MachineBasicBlock *BB) const { in HasValueForBlock()
63 return getAvailableVals(AV).count(BB); in HasValueForBlock()
68 void MachineSSAUpdater::AddAvailableValue(MachineBasicBlock *BB, unsigned V) { in AddAvailableValue() argument
69 getAvailableVals(AV)[BB] = V; in AddAvailableValue()
74 unsigned MachineSSAUpdater::GetValueAtEndOfBlock(MachineBasicBlock *BB) { in GetValueAtEndOfBlock() argument
75 return GetValueAtEndOfBlockInternal(BB); in GetValueAtEndOfBlock()
79 unsigned LookForIdenticalPHI(MachineBasicBlock *BB, in LookForIdenticalPHI() argument
81 if (BB->empty()) in LookForIdenticalPHI()
84 MachineBasicBlock::iterator I = BB->begin(); in LookForIdenticalPHI()
91 while (I != BB->end() && I->isPHI()) { in LookForIdenticalPHI()
[all …]
DUnreachableBlockElim.cpp76 BasicBlock *BB = I; in runOnFunction() local
77 DeadBlocks.push_back(BB); in runOnFunction()
78 while (PHINode *PN = dyn_cast<PHINode>(BB->begin())) { in runOnFunction()
80 BB->getInstList().pop_front(); in runOnFunction()
82 for (succ_iterator SI = succ_begin(BB), E = succ_end(BB); SI != E; ++SI) in runOnFunction()
83 (*SI)->removePredecessor(BB); in runOnFunction()
84 BB->dropAllReferences(); in runOnFunction()
137 MachineBasicBlock *BB = I; in runOnMachineFunction() local
140 if (!Reachable.count(BB)) { in runOnMachineFunction()
141 DeadBlocks.push_back(BB); in runOnMachineFunction()
[all …]
/freebsd-9-stable/contrib/llvm/lib/Transforms/Scalar/
DJumpThreading.cpp117 bool ProcessBlock(BasicBlock *BB);
118 bool ThreadEdge(BasicBlock *BB, const SmallVectorImpl<BasicBlock*> &PredBBs,
120 bool DuplicateCondBranchOnPHIIntoPred(BasicBlock *BB,
123 bool ComputeValueKnownInPredecessors(Value *V, BasicBlock *BB,
126 bool ProcessThreadableEdges(Value *Cond, BasicBlock *BB,
133 bool TryToUnfoldSelect(CmpInst *CondCmp, BasicBlock *BB);
162 BasicBlock *BB = I; in runOnFunction() local
164 while (ProcessBlock(BB)) in runOnFunction()
171 if (pred_begin(BB) == pred_end(BB) && in runOnFunction()
172 BB != &BB->getParent()->getEntryBlock()) { in runOnFunction()
[all …]
DTailRecursionElimination.cpp104 bool FoldReturnAndProcessPred(BasicBlock *BB,
143 BasicBlock *BB = AI->getParent(); in CanTRE() local
144 return BB == &BB->getParent()->getEntryBlock() && in CanTRE()
192 for (Function::iterator BB = F.begin(), EE = F.end(); BB != EE; ++BB) { in runOnFunction() local
193 for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I) { in runOnFunction()
211 for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB) { in runOnFunction() local
212 if (ReturnInst *Ret = dyn_cast<ReturnInst>(BB->getTerminator())) { in runOnFunction()
215 if (!Change && BB->getFirstNonPHIOrDbg() == Ret) in runOnFunction()
216 Change = FoldReturnAndProcessPred(BB, Ret, OldEntry, in runOnFunction()
248 for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB) { in runOnFunction() local
[all …]
DStructurizeCFG.cpp71 void addBlock(BasicBlock *BB, bool Remember = true) { in addBlock() argument
72 DomTreeNode *Node = DT->getNode(BB); in addBlock()
78 Result = BB; in addBlock()
96 ExplicitMentioned = Remember && (Result == BB); in addBlock()
204 void killTerminator(BasicBlock *BB);
215 void setPrevNode(BasicBlock *BB);
217 bool dominatesPredicates(BasicBlock *BB, RegionNode *Node);
298 BasicBlock *BB = N->getNodeAs<BasicBlock>(); in analyzeLoops() local
299 BranchInst *Term = cast<BranchInst>(BB->getTerminator()); in analyzeLoops()
305 Loops[Succ] = BB; in analyzeLoops()
[all …]
/freebsd-9-stable/contrib/llvm/lib/Analysis/
DCFG.cpp30 const BasicBlock *BB = &F.getEntryBlock(); in FindFunctionBackedges() local
31 if (succ_begin(BB) == succ_end(BB)) in FindFunctionBackedges()
38 Visited.insert(BB); in FindFunctionBackedges()
39 VisitStack.push_back(std::make_pair(BB, succ_begin(BB))); in FindFunctionBackedges()
40 InStack.insert(BB); in FindFunctionBackedges()
48 BB = *I++; in FindFunctionBackedges()
49 if (Visited.insert(BB)) { in FindFunctionBackedges()
54 if (InStack.count(BB)) in FindFunctionBackedges()
55 Result.push_back(std::make_pair(ParentBB, BB)); in FindFunctionBackedges()
60 InStack.insert(BB); in FindFunctionBackedges()
[all …]
DBranchProbabilityInfo.cpp115 static uint32_t getMaxWeightFor(BasicBlock *BB) { in getMaxWeightFor() argument
116 return UINT32_MAX / BB->getTerminator()->getNumSuccessors(); in getMaxWeightFor()
124 bool BranchProbabilityInfo::calcUnreachableHeuristics(BasicBlock *BB) { in calcUnreachableHeuristics() argument
125 TerminatorInst *TI = BB->getTerminator(); in calcUnreachableHeuristics()
128 PostDominatedByUnreachable.insert(BB); in calcUnreachableHeuristics()
135 for (succ_iterator I = succ_begin(BB), E = succ_end(BB); I != E; ++I) { in calcUnreachableHeuristics()
145 PostDominatedByUnreachable.insert(BB); in calcUnreachableHeuristics()
157 setEdgeWeight(BB, *I, UnreachableWeight); in calcUnreachableHeuristics()
167 setEdgeWeight(BB, *I, ReachableWeight); in calcUnreachableHeuristics()
174 bool BranchProbabilityInfo::calcMetadataWeights(BasicBlock *BB) { in calcMetadataWeights() argument
[all …]
DRegionInfo.cpp71 void Region::replaceEntry(BasicBlock *BB) { in replaceEntry() argument
72 entry.setPointer(BB); in replaceEntry()
75 void Region::replaceExit(BasicBlock *BB) { in replaceExit() argument
77 exit = BB; in replaceExit()
113 BasicBlock *BB = const_cast<BasicBlock*>(B); in contains() local
115 if (!DT->getNode(BB)) in contains()
124 return (DT->dominates(entry, BB) in contains()
125 && !(DT->dominates(exit, BB) && DT->dominates(entry, exit))); in contains()
160 Loop *Region::outermostLoopInRegion(LoopInfo *LI, BasicBlock* BB) const { in outermostLoopInRegion()
161 assert(LI && BB && "LI and BB cannot be null!"); in outermostLoopInRegion()
[all …]
DLazyValueInfo.cpp348 BasicBlock *BB; member
353 : Parent(P), Val(V), BB(B), BBLV(LV) { } in OverDefinedCacheUpdater()
357 Parent->OverDefinedCache.insert(std::make_pair(BB, Val)); in markResult()
364 LVILatticeVal getBlockValue(Value *Val, BasicBlock *BB);
367 bool hasBlockValue(Value *Val, BasicBlock *BB);
372 bool solveBlockValue(Value *Val, BasicBlock *BB);
374 Value *Val, BasicBlock *BB);
376 PHINode *PN, BasicBlock *BB);
378 Instruction *BBI, BasicBlock *BB);
389 LVILatticeVal getValueInBlock(Value *V, BasicBlock *BB);
[all …]
/freebsd-9-stable/contrib/llvm/include/llvm/Support/
DInstIterator.h37 _BB_i_t BB; // BasicBlocksType::iterator variable
52 : BBs(II.BBs), BB(II.BB), BI(II.BI) {} in InstIterator()
56 : BBs(II.BBs), BB(II.BB), BI(II.BI) {} in InstIterator()
59 : BBs(&m.getBasicBlockList()), BB(BBs->begin()) { // begin ctor in InstIterator()
60 if (BB != BBs->end()) { in InstIterator()
61 BI = BB->begin(); in InstIterator()
67 : BBs(&m.getBasicBlockList()), BB(BBs->end()) { // end ctor in InstIterator()
71 inline BBIty &getBasicBlockIterator() { return BB; } in getBasicBlockIterator()
78 return BB == y.BB && (BB == BBs->end() || BI == y.BI);
94 while (BB == BBs->end() || BI == BB->begin()) {
[all …]
/freebsd-9-stable/contrib/llvm/lib/Transforms/IPO/
DPruneEH.cpp47 void DeleteBasicBlock(BasicBlock *BB);
103 for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) { in runOnSCC() local
104 if (CheckUnwind && isa<ResumeInst>(BB->getTerminator())) { in runOnSCC()
107 } else if (CheckReturn && isa<ReturnInst>(BB->getTerminator())) { in runOnSCC()
114 for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I) in runOnSCC()
175 for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) { in SimplifyFunction() local
176 if (InvokeInst *II = dyn_cast<InvokeInst>(BB->getTerminator())) in SimplifyFunction()
199 BB->getInstList().pop_back(); in SimplifyFunction()
209 for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ) in SimplifyFunction()
216 BasicBlock *New = BB->splitBasicBlock(I); in SimplifyFunction()
[all …]
/freebsd-9-stable/contrib/llvm/lib/Transforms/Utils/
DLocal.cpp59 bool llvm::ConstantFoldTerminator(BasicBlock *BB, bool DeleteDeadConditions, in ConstantFoldTerminator() argument
61 TerminatorInst *T = BB->getTerminator(); in ConstantFoldTerminator()
82 OldDest->removePredecessor(BB); in ConstantFoldTerminator()
147 MDBuilder(BB->getContext()). in ConstantFoldTerminator()
174 BasicBlock *BB = SI->getParent(); in ConstantFoldTerminator() local
183 Succ->removePredecessor(BB); in ConstantFoldTerminator()
212 MDBuilder(BB->getContext()). in ConstantFoldTerminator()
247 BB->getTerminator()->eraseFromParent(); in ConstantFoldTerminator()
248 new UnreachableInst(BB->getContext(), BB); in ConstantFoldTerminator()
398 bool llvm::SimplifyInstructionsInBlock(BasicBlock *BB, const DataLayout *TD, in SimplifyInstructionsInBlock() argument
[all …]
DBasicBlockUtils.cpp36 void llvm::DeleteDeadBlock(BasicBlock *BB) { in DeleteDeadBlock() argument
37 assert((pred_begin(BB) == pred_end(BB) || in DeleteDeadBlock()
39 BB->getSinglePredecessor() == BB) && "Block is not dead!"); in DeleteDeadBlock()
40 TerminatorInst *BBTerm = BB->getTerminator(); in DeleteDeadBlock()
45 BBTerm->getSuccessor(i)->removePredecessor(BB); in DeleteDeadBlock()
48 while (!BB->empty()) { in DeleteDeadBlock()
49 Instruction &I = BB->back(); in DeleteDeadBlock()
57 BB->getInstList().pop_back(); in DeleteDeadBlock()
61 BB->eraseFromParent(); in DeleteDeadBlock()
68 void llvm::FoldSingleEntryPHINodes(BasicBlock *BB, Pass *P) { in FoldSingleEntryPHINodes() argument
[all …]
DSSAUpdater.cpp54 bool SSAUpdater::HasValueForBlock(BasicBlock *BB) const { in HasValueForBlock()
55 return getAvailableVals(AV).count(BB); in HasValueForBlock()
58 void SSAUpdater::AddAvailableValue(BasicBlock *BB, Value *V) { in AddAvailableValue() argument
62 getAvailableVals(AV)[BB] = V; in AddAvailableValue()
81 Value *SSAUpdater::GetValueAtEndOfBlock(BasicBlock *BB) { in GetValueAtEndOfBlock() argument
82 Value *Res = GetValueAtEndOfBlockInternal(BB); in GetValueAtEndOfBlock()
86 Value *SSAUpdater::GetValueInMiddleOfBlock(BasicBlock *BB) { in GetValueInMiddleOfBlock() argument
89 if (!HasValueForBlock(BB)) in GetValueInMiddleOfBlock()
90 return GetValueAtEndOfBlock(BB); in GetValueInMiddleOfBlock()
100 if (PHINode *SomePhi = dyn_cast<PHINode>(BB->begin())) { in GetValueInMiddleOfBlock()
[all …]
DLoopUnroll.cpp63 static BasicBlock *FoldBlockIntoPredecessor(BasicBlock *BB, LoopInfo* LI, in FoldBlockIntoPredecessor() argument
68 BasicBlock *OnlyPred = BB->getSinglePredecessor(); in FoldBlockIntoPredecessor()
74 DEBUG(dbgs() << "Merging: " << *BB << "into: " << *OnlyPred); in FoldBlockIntoPredecessor()
81 FoldSingleEntryPHINodes(BB); in FoldBlockIntoPredecessor()
88 BB->replaceAllUsesWith(OnlyPred); in FoldBlockIntoPredecessor()
91 OnlyPred->getInstList().splice(OnlyPred->end(), BB->getInstList()); in FoldBlockIntoPredecessor()
94 StringRef OldName = BB->getName(); in FoldBlockIntoPredecessor()
101 if (Loop *L = LI->getLoopFor(BB)) in FoldBlockIntoPredecessor()
105 LI->removeBlock(BB); in FoldBlockIntoPredecessor()
111 BB->eraseFromParent(); in FoldBlockIntoPredecessor()
[all …]
DSimplifyCFG.cpp114 bool run(BasicBlock *BB);
252 static bool DominatesMergePoint(Value *V, BasicBlock *BB, in DominatesMergePoint() argument
268 if (PBB == BB) return false; in DominatesMergePoint()
274 if (BI == 0 || BI->isConditional() || BI->getSuccessor(0) != BB) in DominatesMergePoint()
300 if (!DominatesMergePoint(*i, BB, AggressiveInsts, CostRemaining)) in DominatesMergePoint()
515 static void EliminateBlockCases(BasicBlock *BB, in EliminateBlockCases() argument
517 Cases.erase(std::remove(Cases.begin(), Cases.end(), BB), Cases.end()); in EliminateBlockCases()
774 BasicBlock *BB = TI->getParent(); in FoldValueComparisonIntoPredecessors() local
779 SmallVector<BasicBlock*, 16> Preds(pred_begin(BB), pred_end(BB)); in FoldValueComparisonIntoPredecessors()
825 if (PredDefault == BB) { in FoldValueComparisonIntoPredecessors()
[all …]
DCloneFunction.cpp37 BasicBlock *llvm::CloneBasicBlock(const BasicBlock *BB, in CloneBasicBlock() argument
41 BasicBlock *NewBB = BasicBlock::Create(BB->getContext(), "", F); in CloneBasicBlock()
42 if (BB->hasName()) NewBB->setName(BB->getName()+NameSuffix); in CloneBasicBlock()
47 for (BasicBlock::const_iterator II = BB->begin(), IE = BB->end(); in CloneBasicBlock()
68 BB != &BB->getParent()->getEntryBlock(); in CloneBasicBlock()
118 const BasicBlock &BB = *BI; in CloneFunctionInto() local
121 BasicBlock *CBB = CloneBasicBlock(&BB, VMap, NameSuffix, NewFunc, CodeInfo); in CloneFunctionInto()
124 VMap[&BB] = CBB; in CloneFunctionInto()
132 if (BB.hasAddressTaken()) { in CloneFunctionInto()
134 const_cast<BasicBlock*>(&BB)); in CloneFunctionInto()
[all …]
/freebsd-9-stable/contrib/llvm/tools/llvm-stress/
Dllvm-stress.cpp129 BB(Block),PT(PT),Ran(R),Context(BB->getContext()) {} in Modifier()
280 BasicBlock *BB; member
290 LoadModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R) {} in LoadModifier()
294 Value *V = new LoadInst(Ptr, "L", BB->getTerminator()); in Act()
300 StoreModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R) {} in StoreModifier()
313 new StoreInst(Val, Ptr, BB->getTerminator()); in Act()
318 BinModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R) {} in BinModifier()
335 Instruction* Term = BB->getTerminator(); in Act()
362 ConstModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R) {} in ConstModifier()
408 AllocaModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R){} in AllocaModifier()
[all …]
/freebsd-9-stable/contrib/llvm/include/llvm/CodeGen/
DMachineInstrBuilder.h244 inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB, in BuildMI() argument
249 MachineFunction &MF = *BB.getParent(); in BuildMI()
251 BB.insert(I, MI); in BuildMI()
255 inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB, in BuildMI() argument
260 MachineFunction &MF = *BB.getParent(); in BuildMI()
262 BB.insert(I, MI); in BuildMI()
266 inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB, in BuildMI() argument
273 return BuildMI(BB, MII, DL, MCID, DestReg); in BuildMI()
277 return BuildMI(BB, MII, DL, MCID, DestReg); in BuildMI()
284 inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB, in BuildMI() argument
[all …]
/freebsd-9-stable/contrib/llvm/include/llvm/Transforms/Utils/
DSSAUpdaterImpl.h45 BlkT *BB; // Back-pointer to the corresponding block.
55 : BB(ThisBB), AvailableVal(V), DefBB(V ? this : 0), BlkNum(0), IDom(0), in BBInfo()
78 ValT GetValue(BlkT *BB) { in GetValue() argument
80 BBInfo *PseudoEntry = BuildBlockList(BB, &BlockList); in GetValue()
84 ValT V = Traits::GetUndefVal(BB, Updater); in GetValue()
85 (*AvailableVals)[BB] = V; in GetValue()
93 return BBMap[BB]->DefBB->AvailableVal; in GetValue()
100 BBInfo *BuildBlockList(BlkT *BB, BlockListTy *BlockList) { in BuildBlockList() argument
104 BBInfo *Info = new (Allocator) BBInfo(BB, 0); in BuildBlockList()
105 BBMap[BB] = Info; in BuildBlockList()
[all …]

12345678910>>...15