auto *NoUnwindAA = A.getAAFor<AANoUnwind>(*this, *I);
- if (!NoUnwindAA || !NoUnwindAA->isAssumedNoUnwind()) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!NoUnwindAA || !NoUnwindAA->isAssumedNoUnwind())
+ return indicatePessimisticFixpoint();
}
}
return ChangeStatus::UNCHANGED;
bool isValidState() const override { return IsValidState; }
/// See AbstractState::indicateOptimisticFixpoint(...).
- void indicateOptimisticFixpoint() override {
+ ChangeStatus indicateOptimisticFixpoint() override {
IsFixed = true;
IsValidState &= true;
+ return ChangeStatus::UNCHANGED;
}
- void indicatePessimisticFixpoint() override {
+ ChangeStatus indicatePessimisticFixpoint() override {
IsFixed = true;
IsValidState = false;
+ return ChangeStatus::CHANGED;
}
};
continue;
if (ICS && (!NoSyncAA || !NoSyncAA->isAssumedNoSync()) &&
- !ICS.hasFnAttr(Attribute::NoSync)) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ !ICS.hasFnAttr(Attribute::NoSync))
+ return indicatePessimisticFixpoint();
if (ICS)
continue;
if (!isVolatile(I) && !isNonRelaxedAtomic(I))
continue;
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
+ return indicatePessimisticFixpoint();
}
auto &OpcodeInstMap = InfoCache.getOpcodeInstMapForFunction(F);
if (!ICS.isConvergent())
continue;
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
+ return indicatePessimisticFixpoint();
}
}
auto *NoFreeAA = A.getAAFor<AANoFreeFunction>(*this, *I);
if ((!NoFreeAA || !NoFreeAA->isAssumedNoFree()) &&
- !ICS.hasFnAttr(Attribute::NoFree)) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ !ICS.hasFnAttr(Attribute::NoFree))
+ return indicatePessimisticFixpoint();
}
}
return ChangeStatus::UNCHANGED;
Function &F = getAnchorScope();
auto *AARetVal = A.getAAFor<AAReturnedValues>(*this, F);
- if (!AARetVal) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!AARetVal)
+ return indicatePessimisticFixpoint();
std::function<bool(Value &, const SmallPtrSetImpl<ReturnInst *> &)> Pred =
this->generatePredicate(A);
- if (!AARetVal->checkForallReturnedValues(Pred)) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!AARetVal->checkForallReturnedValues(Pred))
+ return indicatePessimisticFixpoint();
return ChangeStatus::UNCHANGED;
}
return false;
};
- if (!A.checkForAllCallSites(F, CallSiteCheck, true, *this)) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!A.checkForAllCallSites(F, CallSiteCheck, true, *this))
+ return indicatePessimisticFixpoint();
return ChangeStatus::UNCHANGED;
}
auto *NonNullAA = A.getAAFor<AANonNull>(*this, V);
- if (!NonNullAA || !NonNullAA->isAssumedNonNull()) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!NonNullAA || !NonNullAA->isAssumedNonNull())
+ return indicatePessimisticFixpoint();
return ChangeStatus::UNCHANGED;
}
continue;
auto *WillReturnAA = A.getAAFor<AAWillReturn>(*this, *I);
- if (!WillReturnAA || !WillReturnAA->isAssumedWillReturn()) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!WillReturnAA || !WillReturnAA->isAssumedWillReturn())
+ return indicatePessimisticFixpoint();
auto *NoRecurseAA = A.getAAFor<AANoRecurse>(*this, *I);
// regarded as having recursion.
// Code below should be
// if ((!NoRecurseAA || !NoRecurseAA->isAssumedNoRecurse()) &&
- if (!NoRecurseAA && !ICS.hasFnAttr(Attribute::NoRecurse)) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!NoRecurseAA && !ICS.hasFnAttr(Attribute::NoRecurse))
+ return indicatePessimisticFixpoint();
}
}
Function &F = getAnchorScope();
auto *AARetValImpl = A.getAAFor<AAReturnedValuesImpl>(*this, F);
- if (!AARetValImpl) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!AARetValImpl)
+ return indicatePessimisticFixpoint();
std::function<bool(Value &, const SmallPtrSetImpl<ReturnInst *> &)> Pred =
[&](Value &RV, const SmallPtrSetImpl<ReturnInst *> &RetInsts) -> bool {
return true;
};
- if (!AARetValImpl->checkForallReturnedValues(Pred)) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!AARetValImpl->checkForallReturnedValues(Pred))
+ return indicatePessimisticFixpoint();
return ChangeStatus::UNCHANGED;
}
}
/// See AbstractState::indicateOptimisticFixpoint(...)
- void indicateOptimisticFixpoint() override {
+ ChangeStatus indicateOptimisticFixpoint() override {
DerefBytesState.indicateOptimisticFixpoint();
NonNullGlobalState.indicateOptimisticFixpoint();
+ return ChangeStatus::UNCHANGED;
}
/// See AbstractState::indicatePessimisticFixpoint(...)
- void indicatePessimisticFixpoint() override {
+ ChangeStatus indicatePessimisticFixpoint() override {
DerefBytesState.indicatePessimisticFixpoint();
NonNullGlobalState.indicatePessimisticFixpoint();
+ return ChangeStatus::CHANGED;
}
/// Update known dereferenceable bytes.
syncNonNull(A.getAAFor<AANonNull>(*this, F));
auto *AARetVal = A.getAAFor<AAReturnedValues>(*this, F);
- if (!AARetVal) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!AARetVal)
+ return indicatePessimisticFixpoint();
bool IsNonNull = isAssumedNonNull();
bool IsGlobal = isAssumedGlobal();
? ChangeStatus::UNCHANGED
: ChangeStatus::CHANGED;
}
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
+ return indicatePessimisticFixpoint();
}
struct AADereferenceableArgument : AADereferenceableImpl {
return isValidState();
};
- if (!A.checkForAllCallSites(F, CallSiteCheck, true, *this)) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!A.checkForAllCallSites(F, CallSiteCheck, true, *this))
+ return indicatePessimisticFixpoint();
updateAssumedNonNullGlobalState(IsNonNull, IsGlobal);
ChangeStatus AAAlignReturned::updateImpl(Attributor &A) {
Function &F = getAnchorScope();
auto *AARetValImpl = A.getAAFor<AAReturnedValuesImpl>(*this, F);
- if (!AARetValImpl) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!AARetValImpl)
+ return indicatePessimisticFixpoint();
// Currently, align<n> is deduced if alignments in return values are assumed
// as greater than n. We reach pessimistic fixpoint if any of the return value
return isValidState();
};
- if (!AARetValImpl->checkForallReturnedValues(Pred)) {
- indicatePessimisticFixpoint();
- return ChangeStatus::CHANGED;
- }
+ if (!AARetValImpl->checkForallReturnedValues(Pred))
+ return indicatePessimisticFixpoint();
return (getAssumed() != BeforeState) ? ChangeStatus::CHANGED
: ChangeStatus::UNCHANGED;