Lines Matching refs:AS
31 void AliasSet::mergeSetIn(AliasSet &AS, AliasSetTracker &AST) {
32 assert(!AS.Forward && "Alias set is already forwarding!");
36 Access |= AS.Access;
37 Alias |= AS.Alias;
38 Volatile |= AS.Volatile;
46 PointerRec *R = AS.getSomePointer();
55 bool ASHadUnknownInsts = !AS.UnknownInsts.empty();
58 std::swap(UnknownInsts, AS.UnknownInsts);
62 UnknownInsts.insert(UnknownInsts.end(), AS.UnknownInsts.begin(), AS.UnknownInsts.end());
63 AS.UnknownInsts.clear();
66 AS.Forward = this; // Forward across AS now...
67 addRef(); // AS is now pointing to us...
70 if (AS.PtrList) {
71 *PtrListEnd = AS.PtrList;
72 AS.PtrList->setPrevInList(PtrListEnd);
73 PtrListEnd = AS.PtrListEnd;
75 AS.PtrList = nullptr;
76 AS.PtrListEnd = &AS.PtrList;
77 assert(*AS.PtrListEnd == nullptr && "End of list is not null?");
80 AS.dropRef(AST);
83 void AliasSetTracker::removeAliasSet(AliasSet *AS) {
84 if (AliasSet *Fwd = AS->Forward) {
86 AS->Forward = nullptr;
88 AliasSets.erase(AS);
237 for (const AliasSet &AS : *this)
238 if (!AS.Forward && AS.aliasesPointer(Ptr, Size, AAInfo, AA))
244 for (const AliasSet &AS : *this)
245 if (!AS.Forward && AS.aliasesUnknownInst(Inst, AA))
287 if (AliasSet *AS = mergeAliasSetsForPointer(Pointer, Size, AAInfo)) {
289 AS->addPointer(*this, Entry, Size, AAInfo);
290 return *AS;
316 AliasSet &AS = addPointer(LI->getOperand(0),
319 if (LI->isVolatile()) AS.setVolatile();
333 AliasSet &AS = addPointer(SI->getOperand(1),
336 if (SI->isVolatile()) AS.setVolatile();
362 AliasSet &AS =
365 AS.setVolatile();
375 AliasSet *AS = findAliasSetForUnknownInst(Inst);
376 if (AS) {
377 AS->addUnknownInst(Inst, AA);
381 AS = &AliasSets.back();
382 AS->addUnknownInst(Inst, AA);
412 for (const AliasSet &AS : AST) {
413 if (AS.Forward)
417 for (unsigned i = 0, e = AS.UnknownInsts.size(); i != e; ++i)
418 add(AS.UnknownInsts[i]);
422 for (AliasSet::iterator ASI = AS.begin(), E = AS.end(); ASI != E; ++ASI) {
425 (AliasSet::AccessLattice)AS.Access, X);
426 if (AS.isVolatile()) NewAS.setVolatile();
433 void AliasSetTracker::remove(AliasSet &AS) {
435 if (!AS.UnknownInsts.empty())
436 AS.dropRef(*this);
437 AS.UnknownInsts.clear();
441 while (!AS.empty()) {
442 AliasSet::PointerRec *P = AS.PtrList;
457 AS.RefCount -= NumRefs;
458 if (AS.RefCount == 0)
459 AS.removeFromTracker(*this);
464 AliasSet *AS = mergeAliasSetsForPointer(Ptr, Size, AAInfo);
465 if (!AS) return false;
466 remove(*AS);
477 AliasSet *AS = mergeAliasSetsForPointer(LI->getOperand(0), Size, AAInfo);
478 if (!AS) return false;
479 remove(*AS);
490 AliasSet *AS = mergeAliasSetsForPointer(SI->getOperand(1), Size, AAInfo);
491 if (!AS) return false;
492 remove(*AS);
500 AliasSet *AS = mergeAliasSetsForPointer(VAAI->getOperand(0),
502 if (!AS) return false;
503 remove(*AS);
517 AliasSet *AS = mergeAliasSetsForPointer(MSI->getRawDest(), Len, AAInfo);
518 if (!AS)
520 remove(*AS);
528 AliasSet *AS = findAliasSetForUnknownInst(I);
529 if (!AS) return false;
530 remove(*AS);
574 AliasSet *AS = PtrValEnt->getAliasSet(*this);
580 AS->dropRef(*this);
602 AliasSet *AS = I->second->getAliasSet(*this);
603 AS->addPointer(*this, Entry, I->second->getSize(),
650 for (const AliasSet &AS : *this)
651 AS.print(OS);