@@ -66,15 +66,10 @@ class MemoryBehaviorVisitor
6666 // / The SILType of the value.
6767 Optional<SILType> TypedAccessTy;
6868
69- // / Should we treat instructions that increment ref counts as None instead of
70- // / MayHaveSideEffects.
71- RetainObserveKind InspectionMode;
72-
7369public:
7470 MemoryBehaviorVisitor (AliasAnalysis *AA, SideEffectAnalysis *SEA,
75- EscapeAnalysis *EA, SILValue V,
76- RetainObserveKind IgnoreRefCountIncs)
77- : AA(AA), SEA(SEA), EA(EA), V(V), InspectionMode(IgnoreRefCountIncs) {}
71+ EscapeAnalysis *EA, SILValue V)
72+ : AA(AA), SEA(SEA), EA(EA), V(V) {}
7873
7974 SILType getValueTBAAType () {
8075 if (!TypedAccessTy)
@@ -223,9 +218,7 @@ class MemoryBehaviorVisitor
223218 // memory this will be unnecessary.
224219#define REFCOUNTINC_MEMBEHAVIOR_INST (Name ) \
225220 MemBehavior visit##Name(Name *I) { \
226- if (InspectionMode == RetainObserveKind::IgnoreRetains) \
227- return MemBehavior::None; \
228- return I->getMemoryBehavior (); \
221+ return MemBehavior::None; \
229222 }
230223 REFCOUNTINC_MEMBEHAVIOR_INST (StrongRetainInst)
231224 REFCOUNTINC_MEMBEHAVIOR_INST (RetainValueInst)
@@ -364,19 +357,15 @@ MemBehavior MemoryBehaviorVisitor::visitApplyInst(ApplyInst *AI) {
364357 // one the parameters in the function call is @in_guaranteed of V, ie. the
365358 // callee isn't allowed to modify it.
366359 Behavior = MemBehavior::MayRead;
367- } else if (ApplyEffects.mayReadRC () ||
368- (InspectionMode == RetainObserveKind::ObserveRetains &&
369- ApplyEffects.mayAllocObjects ())) {
370- Behavior = MemBehavior::MayHaveSideEffects;
371360 } else {
372361 auto &GlobalEffects = ApplyEffects.getGlobalEffects ();
373- Behavior = GlobalEffects.getMemBehavior (InspectionMode );
362+ Behavior = GlobalEffects.getMemBehavior (RetainObserveKind::IgnoreRetains );
374363
375364 // Check all parameter effects.
376365 for (unsigned Idx = 0 , End = AI->getNumArguments ();
377366 Idx < End && Behavior < MemBehavior::MayHaveSideEffects; ++Idx) {
378367 auto &ArgEffect = ApplyEffects.getParameterEffects ()[Idx];
379- auto ArgBehavior = ArgEffect.getMemBehavior (InspectionMode );
368+ auto ArgBehavior = ArgEffect.getMemBehavior (RetainObserveKind::IgnoreRetains );
380369 if (ArgEffect.mayRelease ()) {
381370 Behavior = MemBehavior::MayHaveSideEffects;
382371 break ;
@@ -442,9 +431,8 @@ visitBeginCOWMutationInst(BeginCOWMutationInst *BCMI) {
442431// ===----------------------------------------------------------------------===//
443432
444433MemBehavior
445- AliasAnalysis::computeMemoryBehavior (SILInstruction *Inst, SILValue V,
446- RetainObserveKind InspectionMode) {
447- MemBehaviorKeyTy Key = toMemoryBehaviorKey (Inst, V, InspectionMode);
434+ AliasAnalysis::computeMemoryBehavior (SILInstruction *Inst, SILValue V) {
435+ MemBehaviorKeyTy Key = toMemoryBehaviorKey (Inst, V);
448436 // Check if we've already computed this result.
449437 auto It = MemoryBehaviorCache.find (Key);
450438 if (It != MemoryBehaviorCache.end ()) {
@@ -457,27 +445,25 @@ AliasAnalysis::computeMemoryBehavior(SILInstruction *Inst, SILValue V,
457445 MemoryBehaviorNodeToIndex.clear ();
458446
459447 // Key is no longer valid as we cleared the MemoryBehaviorNodeToIndex.
460- Key = toMemoryBehaviorKey (Inst, V, InspectionMode );
448+ Key = toMemoryBehaviorKey (Inst, V);
461449 }
462450
463451 // Calculate the aliasing result and store it in the cache.
464- auto Result = computeMemoryBehaviorInner (Inst, V, InspectionMode );
452+ auto Result = computeMemoryBehaviorInner (Inst, V);
465453 MemoryBehaviorCache[Key] = Result;
466454 return Result;
467455}
468456
469457MemBehavior
470- AliasAnalysis::computeMemoryBehaviorInner (SILInstruction *Inst, SILValue V,
471- RetainObserveKind InspectionMode) {
458+ AliasAnalysis::computeMemoryBehaviorInner (SILInstruction *Inst, SILValue V) {
472459 LLVM_DEBUG (llvm::dbgs () << " GET MEMORY BEHAVIOR FOR:\n " << *Inst << " "
473460 << *V);
474461 assert (SEA && " SideEffectsAnalysis must be initialized!" );
475- return MemoryBehaviorVisitor (this , SEA, EA, V, InspectionMode ).visit (Inst);
462+ return MemoryBehaviorVisitor (this , SEA, EA, V).visit (Inst);
476463}
477464
478465MemBehaviorKeyTy AliasAnalysis::toMemoryBehaviorKey (SILInstruction *V1,
479- SILValue V2,
480- RetainObserveKind M) {
466+ SILValue V2) {
481467 size_t idx1 =
482468 MemoryBehaviorNodeToIndex.getIndex (V1->getRepresentativeSILNodeInObject ());
483469 assert (idx1 != std::numeric_limits<size_t >::max () &&
@@ -486,5 +472,5 @@ MemBehaviorKeyTy AliasAnalysis::toMemoryBehaviorKey(SILInstruction *V1,
486472 V2->getRepresentativeSILNodeInObject ());
487473 assert (idx2 != std::numeric_limits<size_t >::max () &&
488474 " ~0 index reserved for empty/tombstone keys" );
489- return {idx1, idx2, M };
475+ return {idx1, idx2};
490476}
0 commit comments