: AbstractAttribute(V, InfoCache) {}
/// See AbstractAttribute::getAttrKind().
- Attribute::AttrKind getAttrKind() const override {
- return ID;
- }
+ Attribute::AttrKind getAttrKind() const override { return ID; }
static constexpr Attribute::AttrKind ID =
Attribute::AttrKind(Attribute::NoSync);
/// }
/// See AbstractAttribute::getManifestPosition().
- ManifestPosition getManifestPosition() const override {
- return MP_FUNCTION;
- }
+ ManifestPosition getManifestPosition() const override { return MP_FUNCTION; }
const std::string getAsStr() const override {
return getAssumed() ? "nounwind" : "may-unwind";
const AbstractState &getState() const override { return *this; }
/// See AbstractAttribute::getManifestPosition().
- ManifestPosition getManifestPosition() const override {
- return MP_ARGUMENT;
- }
+ ManifestPosition getManifestPosition() const override { return MP_ARGUMENT; }
/// See AbstractAttribute::updateImpl(Attributor &A).
ChangeStatus updateImpl(Attributor &A) override;
/// }
/// See AbstractAttribute::getManifestPosition().
- ManifestPosition getManifestPosition() const override {
- return MP_FUNCTION;
- }
+ ManifestPosition getManifestPosition() const override { return MP_FUNCTION; }
const std::string getAsStr() const override {
return getAssumed() ? "nosync" : "may-sync";
/// Helper function used to determine whether an instruction is volatile.
static bool isVolatile(Instruction *I);
- /// Helper function uset to check if intrinsic is volatile (memcpy, memmove, memset).
+ /// Helper function uset to check if intrinsic is volatile (memcpy, memmove,
+ /// memset).
static bool isNoSyncIntrinsic(Instruction *I);
};
auto *NoSyncAA = A.getAAFor<AANoSyncFunction>(*this, *I);
if (isa<IntrinsicInst>(I) && isNoSyncIntrinsic(I))
- continue;
+ continue;
if (ICS && (!NoSyncAA || !NoSyncAA->isAssumedNoSync()) &&
!ICS.hasFnAttr(Attribute::NoSync)) {
return ChangeStatus::CHANGED;
}
- if(ICS)
+ if (ICS)
continue;
if (!isVolatile(I) && !isNonRelaxedAtomic(I))