Skip to content

Commit 9e6d1f4

Browse files
[CodeGen] Qualify auto variables in for loops (NFC)
1 parent 6f32e71 commit 9e6d1f4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+167
-166
lines changed

llvm/lib/CodeGen/AsmPrinter/AccelTable.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,8 @@ class Dwarf5AccelTableWriter : public AccelTableWriter {
245245
void AccelTableWriter::emitHashes() const {
246246
uint64_t PrevHash = std::numeric_limits<uint64_t>::max();
247247
unsigned BucketIdx = 0;
248-
for (auto &Bucket : Contents.getBuckets()) {
249-
for (auto &Hash : Bucket) {
248+
for (const auto &Bucket : Contents.getBuckets()) {
249+
for (const auto &Hash : Bucket) {
250250
uint32_t HashValue = Hash->HashValue;
251251
if (SkipIdenticalHashes && PrevHash == HashValue)
252252
continue;
@@ -327,7 +327,7 @@ void AppleAccelTableWriter::emitData() const {
327327
const auto &Buckets = Contents.getBuckets();
328328
for (const AccelTableBase::HashList &Bucket : Buckets) {
329329
uint64_t PrevHash = std::numeric_limits<uint64_t>::max();
330-
for (auto &Hash : Bucket) {
330+
for (const auto &Hash : Bucket) {
331331
// Terminate the previous entry if there is no hash collision with the
332332
// current one.
333333
if (PrevHash != std::numeric_limits<uint64_t>::max() &&
@@ -667,12 +667,12 @@ void AccelTableBase::print(raw_ostream &OS) const {
667667
}
668668

669669
OS << "Buckets and Hashes: \n";
670-
for (auto &Bucket : Buckets)
671-
for (auto &Hash : Bucket)
670+
for (const auto &Bucket : Buckets)
671+
for (const auto &Hash : Bucket)
672672
Hash->print(OS);
673673

674674
OS << "Data: \n";
675-
for (auto &E : Entries)
675+
for (const auto &E : Entries)
676676
E.second.print(OS);
677677
}
678678

llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ bool AsmPrinter::doInitialization(Module &M) {
488488

489489
GCModuleInfo *MI = getAnalysisIfAvailable<GCModuleInfo>();
490490
assert(MI && "AsmPrinter didn't require GCModuleInfo?");
491-
for (auto &I : *MI)
491+
for (const auto &I : *MI)
492492
if (GCMetadataPrinter *MP = GetOrCreateGCPrinter(*I))
493493
MP->beginAssembly(M, *MI, *this);
494494

@@ -1731,7 +1731,7 @@ static unsigned getNumGlobalVariableUses(const Constant *C) {
17311731
return 1;
17321732

17331733
unsigned NumUses = 0;
1734-
for (auto *CU : C->users())
1734+
for (const auto *CU : C->users())
17351735
NumUses += getNumGlobalVariableUses(dyn_cast<Constant>(CU));
17361736

17371737
return NumUses;
@@ -1754,7 +1754,7 @@ static bool isGOTEquivalentCandidate(const GlobalVariable *GV,
17541754

17551755
// To be a got equivalent, at least one of its users need to be a constant
17561756
// expression used by another global variable.
1757-
for (auto *U : GV->users())
1757+
for (const auto *U : GV->users())
17581758
NumGOTEquivUsers += getNumGlobalVariableUses(dyn_cast<Constant>(U));
17591759

17601760
return NumGOTEquivUsers > 0;
@@ -1797,7 +1797,7 @@ void AsmPrinter::emitGlobalGOTEquivs() {
17971797
}
17981798
GlobalGOTEquivs.clear();
17991799

1800-
for (auto *GV : FailedCandidates)
1800+
for (const auto *GV : FailedCandidates)
18011801
emitGlobalVariable(GV);
18021802
}
18031803

@@ -3717,7 +3717,7 @@ void AsmPrinter::emitStackMaps(StackMaps &SM) {
37173717
// No GC strategy, use the default format.
37183718
NeedsDefault = true;
37193719
else
3720-
for (auto &I : *MI) {
3720+
for (const auto &I : *MI) {
37213721
if (GCMetadataPrinter *MP = GetOrCreateGCPrinter(*I))
37223722
if (MP->emitStackMaps(SM, *this))
37233723
continue;

llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ void AsmPrinter::emitDwarfDIE(const DIE &Die) const {
309309

310310
// Emit the DIE children if any.
311311
if (Die.hasChildren()) {
312-
for (auto &Child : Die.children())
312+
for (const auto &Child : Die.children())
313313
emitDwarfDIE(Child);
314314

315315
OutStreamer->AddComment("End Of Children Mark");

llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ void DIEHash::computeHash(const DIE &Die) {
374374
addAttributes(Die);
375375

376376
// Then hash each of the children of the DIE.
377-
for (auto &C : Die.children()) {
377+
for (const auto &C : Die.children()) {
378378
// 7.27 Step 7
379379
// If C is a nested type entry or a member function entry, ...
380380
if (isType(C.getTag()) || (C.getTag() == dwarf::DW_TAG_subprogram && isType(C.getParent()->getTag()))) {

llvm/lib/CodeGen/AsmPrinter/DbgEntityHistoryCalculator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,11 +340,11 @@ static void clobberRegEntries(InlinedEntity Var, unsigned RegNo,
340340
if (Entry.getInstr()->hasDebugOperandForReg(RegNo)) {
341341
IndicesToErase.push_back(Index);
342342
Entry.endEntry(ClobberIndex);
343-
for (auto &MO : Entry.getInstr()->debug_operands())
343+
for (const auto &MO : Entry.getInstr()->debug_operands())
344344
if (MO.isReg() && MO.getReg() && MO.getReg() != RegNo)
345345
MaybeRemovedRegisters.insert(MO.getReg());
346346
} else {
347-
for (auto &MO : Entry.getInstr()->debug_operands())
347+
for (const auto &MO : Entry.getInstr()->debug_operands())
348348
if (MO.isReg() && MO.getReg())
349349
KeepRegisters.insert(MO.getReg());
350350
}

llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ void DebugHandlerBase::beginFunction(const MachineFunction *MF) {
304304
LabelsBeforeInsn[Entries.front().getInstr()] = Asm->getFunctionBegin();
305305
if (Entries.front().getInstr()->getDebugExpression()->isFragment()) {
306306
// Mark all non-overlapping initial fragments.
307-
for (auto I = Entries.begin(); I != Entries.end(); ++I) {
307+
for (const auto *I = Entries.begin(); I != Entries.end(); ++I) {
308308
if (!I->isDbgValue())
309309
continue;
310310
const DIExpression *Fragment = I->getInstr()->getDebugExpression();

llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -848,7 +848,7 @@ DIE *DwarfCompileUnit::constructVariableDIEImpl(const DbgVariable &DV,
848848
Optional<unsigned> NVPTXAddressSpace;
849849
DIELoc *Loc = new (DIEValueAllocator) DIELoc;
850850
DIEDwarfExpression DwarfExpr(*Asm, *this, *Loc);
851-
for (auto &Fragment : DV.getFrameIndexExprs()) {
851+
for (const auto &Fragment : DV.getFrameIndexExprs()) {
852852
Register FrameReg;
853853
const DIExpression *Expr = Fragment.Expr;
854854
const TargetFrameLowering *TFI = Asm->MF->getSubtarget().getFrameLowering();
@@ -970,7 +970,7 @@ sortLocalVars(SmallVectorImpl<DbgVariable *> &Input) {
970970
SmallDenseSet<DbgVariable *, 8> Visiting;
971971

972972
// Initialize the worklist and the DIVariable lookup table.
973-
for (auto Var : reverse(Input)) {
973+
for (auto *Var : reverse(Input)) {
974974
DbgVar.insert({Var->getVariable(), Var});
975975
WorkList.push_back({Var, 0});
976976
}
@@ -1005,7 +1005,7 @@ sortLocalVars(SmallVectorImpl<DbgVariable *> &Input) {
10051005
// Push dependencies and this node onto the worklist, so that this node is
10061006
// visited again after all of its dependencies are handled.
10071007
WorkList.push_back({Var, 1});
1008-
for (auto *Dependency : dependencies(Var)) {
1008+
for (const auto *Dependency : dependencies(Var)) {
10091009
// Don't add dependency if it is in a different lexical scope or a global.
10101010
if (const auto *Dep = dyn_cast<const DILocalVariable>(Dependency))
10111011
if (DbgVariable *Var = DbgVar.lookup(Dep))

llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,7 @@ static void collectCallSiteParameters(const MachineInstr *CallMI,
819819
}
820820

821821
// Do not emit CSInfo for undef forwarding registers.
822-
for (auto &MO : CallMI->uses())
822+
for (const auto &MO : CallMI->uses())
823823
if (MO.isReg() && MO.isUndef())
824824
ForwardedRegWorklist.erase(MO.getReg());
825825

@@ -2235,7 +2235,7 @@ void DwarfDebug::endFunctionImpl(const MachineFunction *MF) {
22352235
#endif
22362236
// Construct abstract scopes.
22372237
for (LexicalScope *AScope : LScopes.getAbstractScopesList()) {
2238-
auto *SP = cast<DISubprogram>(AScope->getScopeNode());
2238+
const auto *SP = cast<DISubprogram>(AScope->getScopeNode());
22392239
for (const DINode *DN : SP->getRetainedNodes()) {
22402240
if (!Processed.insert(InlinedEntity(DN, nullptr)).second)
22412241
continue;
@@ -2527,7 +2527,7 @@ void DwarfDebug::emitDebugLocEntry(ByteStreamer &Streamer,
25272527

25282528
using Encoding = DWARFExpression::Operation::Encoding;
25292529
uint64_t Offset = 0;
2530-
for (auto &Op : Expr) {
2530+
for (const auto &Op : Expr) {
25312531
assert(Op.getCode() != dwarf::DW_OP_const_type &&
25322532
"3 operand ops not yet supported");
25332533
Streamer.emitInt8(Op.getCode(), Comment != End ? *(Comment++) : "");

llvm/lib/CodeGen/AtomicExpandPass.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ bool AtomicExpand::runOnFunction(Function &F) {
187187
AtomicInsts.push_back(&I);
188188

189189
bool MadeChange = false;
190-
for (auto I : AtomicInsts) {
190+
for (auto *I : AtomicInsts) {
191191
auto LI = dyn_cast<LoadInst>(I);
192192
auto SI = dyn_cast<StoreInst>(I);
193193
auto RMWI = dyn_cast<AtomicRMWInst>(I);
@@ -1371,7 +1371,7 @@ bool AtomicExpand::expandAtomicCmpXchg(AtomicCmpXchgInst *CI) {
13711371
// Look for any users of the cmpxchg that are just comparing the loaded value
13721372
// against the desired one, and replace them with the CFG-derived version.
13731373
SmallVector<ExtractValueInst *, 2> PrunedInsts;
1374-
for (auto User : CI->users()) {
1374+
for (auto *User : CI->users()) {
13751375
ExtractValueInst *EV = dyn_cast<ExtractValueInst>(User);
13761376
if (!EV)
13771377
continue;
@@ -1388,7 +1388,7 @@ bool AtomicExpand::expandAtomicCmpXchg(AtomicCmpXchgInst *CI) {
13881388
}
13891389

13901390
// We can remove the instructions now we're no longer iterating through them.
1391-
for (auto EV : PrunedInsts)
1391+
for (auto *EV : PrunedInsts)
13921392
EV->eraseFromParent();
13931393

13941394
if (!CI->use_empty()) {

llvm/lib/CodeGen/BasicBlockSections.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ static bool hasInstrProfHashMismatch(MachineFunction &MF) {
297297
auto *Existing = MF.getFunction().getMetadata(LLVMContext::MD_annotation);
298298
if (Existing) {
299299
MDTuple *Tuple = cast<MDTuple>(Existing);
300-
for (auto &N : Tuple->operands())
300+
for (const auto &N : Tuple->operands())
301301
if (cast<MDString>(N.get())->getString() == MetadataName)
302302
return true;
303303
}

llvm/lib/CodeGen/CalcSpillWeights.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ float VirtRegAuxInfo::weightCalcHelper(LiveInterval &LI, SlotIndex *Start,
279279
MRI.clearSimpleHint(LI.reg());
280280

281281
std::set<Register> HintedRegs;
282-
for (auto &Hint : CopyHints) {
282+
for (const auto &Hint : CopyHints) {
283283
if (!HintedRegs.insert(Hint.Reg).second ||
284284
(TargetHint.first != 0 && Hint.Reg == TargetHint.second))
285285
// Don't add the same reg twice or the target-type hint again.

llvm/lib/CodeGen/CodeGenPrepare.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -730,7 +730,7 @@ bool CodeGenPrepare::eliminateFallThrough(Function &F) {
730730

731731
// (Repeatedly) merging blocks into their predecessors can create redundant
732732
// debug intrinsics.
733-
for (auto &Pred : Preds)
733+
for (const auto &Pred : Preds)
734734
if (auto *BB = cast_or_null<BasicBlock>(Pred))
735735
RemoveRedundantDbgInstrs(BB);
736736

@@ -3684,7 +3684,7 @@ class AddressingModeCombiner {
36843684
// Phi we added (subject to match) and both of them is in the same basic
36853685
// block then we can match our pair if values match. So we state that
36863686
// these values match and add it to work list to verify that.
3687-
for (auto B : Item.first->blocks()) {
3687+
for (auto *B : Item.first->blocks()) {
36883688
Value *FirstValue = Item.first->getIncomingValueForBlock(B);
36893689
Value *SecondValue = Item.second->getIncomingValueForBlock(B);
36903690
if (FirstValue == SecondValue)

llvm/lib/CodeGen/DFAPacketizer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ void VLIWPacketizerList::PacketizeMIs(MachineBasicBlock *MBB,
239239
});
240240
if (ResourceAvail && shouldAddToPacket(MI)) {
241241
// Dependency check for MI with instructions in CurrentPacketMIs.
242-
for (auto MJ : CurrentPacketMIs) {
242+
for (auto *MJ : CurrentPacketMIs) {
243243
SUnit *SUJ = MIToSUnit[MJ];
244244
assert(SUJ && "Missing SUnit Info!");
245245

llvm/lib/CodeGen/EarlyIfConversion.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -808,7 +808,7 @@ void updateDomTree(MachineDominatorTree *DomTree, const SSAIfConv &IfConv,
808808
// TBB and FBB should not dominate any blocks.
809809
// Tail children should be transferred to Head.
810810
MachineDomTreeNode *HeadNode = DomTree->getNode(IfConv.Head);
811-
for (auto B : Removed) {
811+
for (auto *B : Removed) {
812812
MachineDomTreeNode *Node = DomTree->getNode(B);
813813
assert(Node != HeadNode && "Cannot erase the head node");
814814
while (Node->getNumChildren()) {
@@ -826,7 +826,7 @@ void updateLoops(MachineLoopInfo *Loops,
826826
return;
827827
// If-conversion doesn't change loop structure, and it doesn't mess with back
828828
// edges, so updating LoopInfo is simply removing the dead blocks.
829-
for (auto B : Removed)
829+
for (auto *B : Removed)
830830
Loops->removeBlock(B);
831831
}
832832
} // namespace
@@ -1065,7 +1065,7 @@ bool EarlyIfConverter::runOnMachineFunction(MachineFunction &MF) {
10651065
// if-conversion in a single pass. The tryConvertIf() function may erase
10661066
// blocks, but only blocks dominated by the head block. This makes it safe to
10671067
// update the dominator tree while the post-order iterator is still active.
1068-
for (auto DomNode : post_order(DomTree))
1068+
for (auto *DomNode : post_order(DomTree))
10691069
if (tryConvertIf(DomNode->getBlock()))
10701070
Changed = true;
10711071

@@ -1198,7 +1198,7 @@ bool EarlyIfPredicator::runOnMachineFunction(MachineFunction &MF) {
11981198
// if-conversion in a single pass. The tryConvertIf() function may erase
11991199
// blocks, but only blocks dominated by the head block. This makes it safe to
12001200
// update the dominator tree while the post-order iterator is still active.
1201-
for (auto DomNode : post_order(DomTree))
1201+
for (auto *DomNode : post_order(DomTree))
12021202
if (tryConvertIf(DomNode->getBlock()))
12031203
Changed = true;
12041204

llvm/lib/CodeGen/FaultMaps.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ void FaultMaps::emitFunctionInfo(const MCSymbol *FnLabel,
8585

8686
OS.emitInt32(0); // Reserved
8787

88-
for (auto &Fault : FFI) {
88+
for (const auto &Fault : FFI) {
8989
LLVM_DEBUG(dbgs() << WFMP << " fault type: "
9090
<< faultTypeToString(Fault.Kind) << "\n");
9191
OS.emitInt32(Fault.Kind);

llvm/lib/CodeGen/GlobalISel/CSEInfo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ const GISelInstProfileBuilder &
319319
GISelInstProfileBuilder::addNodeID(const MachineInstr *MI) const {
320320
addNodeIDMBB(MI->getParent());
321321
addNodeIDOpcode(MI->getOpcode());
322-
for (auto &Op : MI->operands())
322+
for (const auto &Op : MI->operands())
323323
addNodeIDMachineOperand(Op);
324324
addNodeIDFlag(MI->getFlags());
325325
return *this;

llvm/lib/CodeGen/GlobalISel/CallLowering.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ bool CallLowering::lowerCall(MachineIRBuilder &MIRBuilder, const CallBase &CB,
116116
// we'll pass to the assigner function.
117117
unsigned i = 0;
118118
unsigned NumFixedArgs = CB.getFunctionType()->getNumParams();
119-
for (auto &Arg : CB.args()) {
119+
for (const auto &Arg : CB.args()) {
120120
ArgInfo OrigArg{ArgRegs[i], *Arg.get(), i, getAttributesForArgIdx(CB, i),
121121
i < NumFixedArgs};
122122
setArgFlags(OrigArg, i + AttributeList::FirstArgIndex, DL, CB);
@@ -960,7 +960,7 @@ bool CallLowering::parametersInCSRMatch(
960960
const SmallVectorImpl<CCValAssign> &OutLocs,
961961
const SmallVectorImpl<ArgInfo> &OutArgs) const {
962962
for (unsigned i = 0; i < OutLocs.size(); ++i) {
963-
auto &ArgLoc = OutLocs[i];
963+
const auto &ArgLoc = OutLocs[i];
964964
// If it's not a register, it's fine.
965965
if (!ArgLoc.isRegLoc())
966966
continue;

llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ bool IRTranslator::translateSwitch(const User &U, MachineIRBuilder &MIB) {
684684
BranchProbabilityInfo *BPI = FuncInfo.BPI;
685685
CaseClusterVector Clusters;
686686
Clusters.reserve(SI.getNumCases());
687-
for (auto &I : SI.cases()) {
687+
for (const auto &I : SI.cases()) {
688688
MachineBasicBlock *Succ = &getMBB(*I.getCaseSuccessor());
689689
assert(Succ && "Could not find successor mbb in mapping");
690690
const ConstantInt *CaseVal = I.getCaseValue();
@@ -1400,7 +1400,7 @@ bool IRTranslator::translateInsertValue(const User &U,
14001400
ArrayRef<uint64_t> DstOffsets = *VMap.getOffsets(U);
14011401
ArrayRef<Register> SrcRegs = getOrCreateVRegs(*Src);
14021402
ArrayRef<Register> InsertedRegs = getOrCreateVRegs(*U.getOperand(1));
1403-
auto InsertedIt = InsertedRegs.begin();
1403+
auto *InsertedIt = InsertedRegs.begin();
14041404

14051405
for (unsigned i = 0; i < DstRegs.size(); ++i) {
14061406
if (DstOffsets[i] >= Offset && InsertedIt != InsertedRegs.end())
@@ -1785,7 +1785,7 @@ bool IRTranslator::translateSimpleIntrinsic(const CallInst &CI,
17851785

17861786
// Yes. Let's translate it.
17871787
SmallVector<llvm::SrcOp, 4> VRegs;
1788-
for (auto &Arg : CI.args())
1788+
for (const auto &Arg : CI.args())
17891789
VRegs.push_back(getOrCreateVReg(*Arg));
17901790

17911791
MIRBuilder.buildInstr(Op, {getOrCreateVReg(CI)}, VRegs,
@@ -2305,7 +2305,7 @@ bool IRTranslator::translateCallBase(const CallBase &CB,
23052305
SmallVector<ArrayRef<Register>, 8> Args;
23062306
Register SwiftInVReg = 0;
23072307
Register SwiftErrorVReg = 0;
2308-
for (auto &Arg : CB.args()) {
2308+
for (const auto &Arg : CB.args()) {
23092309
if (CLI->supportSwiftError() && isSwiftError(Arg)) {
23102310
assert(SwiftInVReg == 0 && "Expected only one swift error argument");
23112311
LLT Ty = getLLTForType(*Arg->getType(), *DL);
@@ -2394,7 +2394,7 @@ bool IRTranslator::translateCall(const User &U, MachineIRBuilder &MIRBuilder) {
23942394
if (isa<FPMathOperator>(CI))
23952395
MIB->copyIRFlags(CI);
23962396

2397-
for (auto &Arg : enumerate(CI.args())) {
2397+
for (const auto &Arg : enumerate(CI.args())) {
23982398
// If this is required to be an immediate, don't materialize it in a
23992399
// register.
24002400
if (CI.paramHasAttr(Arg.index(), Attribute::ImmArg)) {
@@ -2947,7 +2947,7 @@ void IRTranslator::finishPendingPhis() {
29472947
for (unsigned i = 0; i < PI->getNumIncomingValues(); ++i) {
29482948
auto IRPred = PI->getIncomingBlock(i);
29492949
ArrayRef<Register> ValRegs = getOrCreateVRegs(*PI->getIncomingValue(i));
2950-
for (auto Pred : getMachinePredBBs({IRPred, PI->getParent()})) {
2950+
for (auto *Pred : getMachinePredBBs({IRPred, PI->getParent()})) {
29512951
if (SeenPreds.count(Pred) || !PhiMBB->isPredecessor(Pred))
29522952
continue;
29532953
SeenPreds.insert(Pred);

0 commit comments

Comments
 (0)