Lines Matching defs:GV
156 ModRefInfo getModRefInfoForGlobal(const GlobalValue &GV) const {
160 auto I = P->Map.find(&GV);
180 void addModRefInfoForGlobal(const GlobalValue &GV, ModRefInfo NewMRI) {
186 auto &GlobalMRI = P->Map[&GV];
192 void eraseModRefInfoForGlobal(const GlobalValue &GV) {
194 P->Map.erase(&GV);
211 if (GlobalValue *GV = dyn_cast<GlobalValue>(V)) {
212 if (GAR->NonAddressTakenGlobals.erase(GV)) {
215 if (GAR->IndirectGlobals.erase(GV)) {
220 if (I->second == GV)
227 FIPair.second.eraseModRefInfoForGlobal(*GV);
277 for (GlobalVariable &GV : M.globals())
278 if (GV.hasLocalLinkage()) {
279 if (!AnalyzeUsesOfPointer(&GV, &Readers,
280 GV.isConstant() ? nullptr : &Writers)) {
282 NonAddressTakenGlobals.insert(&GV);
283 Handles.emplace_front(*this, &GV);
291 FunctionInfos[Reader].addModRefInfoForGlobal(GV, ModRefInfo::Ref);
294 if (!GV.isConstant()) // No need to keep track of writers to constants
300 FunctionInfos[Writer].addModRefInfoForGlobal(GV, ModRefInfo::Mod);
305 if (GV.getValueType()->isPointerTy() &&
306 AnalyzeIndirectGlobalMemory(&GV))
410 /// Further, all loads out of GV must directly use the memory, not store the
412 /// GV to be owned by GV and can disambiguate other pointers from it.
413 bool GlobalsAAResult::AnalyzeIndirectGlobalMemory(GlobalVariable *GV) {
419 if (Constant *C = GV->getInitializer())
425 for (User *U : GV->users()) {
435 if (SI->getOperand(0) == GV)
451 GV))
465 AllocsForIndirectGlobals[AllocRelatedValues.back()] = GV;
470 IndirectGlobals.insert(GV);
471 Handles.emplace_front(*this, GV);
630 // GV is a non-escaping global. V is a pointer address that has been loaded from.
632 // alias GV.
633 static bool isNonEscapingGlobalNoAliasWithLoad(const GlobalValue *GV,
715 bool GlobalsAAResult::isNonEscapingGlobalNoAlias(const GlobalValue *GV,
734 if (InputGV == GV)
739 auto *GVar = dyn_cast<GlobalVariable>(GV);
776 if (isNonEscapingGlobalNoAliasWithLoad(GV, Ptr, Depth, DL))
777 // The load does not alias with GV.
857 const GlobalValue *GV = GV1 ? GV1 : GV2;
859 if (isNonEscapingGlobalNoAlias(GV, UV))
872 if (GlobalVariable *GV = dyn_cast<GlobalVariable>(LI->getOperand(0)))
873 if (IndirectGlobals.count(GV))
874 GV1 = GV;
876 if (const GlobalVariable *GV = dyn_cast<GlobalVariable>(LI->getOperand(0)))
877 if (IndirectGlobals.count(GV))
878 GV2 = GV;
904 const GlobalValue *GV,
912 // is based on GV, return the conservative result.
919 // Try ::alias to see if all objects are known not to alias GV.
922 MemoryLocation::getBeforeOrAfter(GV), AAQI,
927 if (is_contained(Objects, GV))
931 // We identified all objects in the argument list, and none of them were GV.
942 if (const GlobalValue *GV =
944 // If GV is internal to this IR and there is no function with local linkage
946 if (GV->hasLocalLinkage() && !UnknownFunctionsWithLocalLinkage)
948 if (NonAddressTakenGlobals.count(GV))
950 Known = FI->getModRefInfoForGlobal(*GV) |
951 getModRefInfoForArgument(Call, GV, AAQI);