void trackStatistics() const override { STATS_DECLTRACK_FN_ATTR(nounwind) }
};
+/// NoUnwind attribute deduction for a call sites.
+using AANoUnwindCallSite = AANoUnwindFunction;
+
/// --------------------- Function Return Values -------------------------------
/// "Attribute" that collects all potential returned values and the return
void trackStatistics() const override { STATS_DECLTRACK_ARG_ATTR(returned) }
};
+/// Returned values information for a call sites.
+using AAReturnedValuesCallSite = AAReturnedValuesFunction;
+
/// ------------------------ NoSync Function Attribute -------------------------
struct AANoSyncImpl : AANoSync {
static bool isNoSyncIntrinsic(Instruction *I);
};
-struct AANoSyncFunction final : public AANoSyncImpl {
- AANoSyncFunction(const IRPosition &IRP) : AANoSyncImpl(IRP) {}
-
- /// See AbstractAttribute::trackStatistics()
- void trackStatistics() const override { STATS_DECLTRACK_FN_ATTR(nosync) }
-};
-
bool AANoSyncImpl::isNonRelaxedAtomic(Instruction *I) {
if (!I->isAtomic())
return false;
return ChangeStatus::UNCHANGED;
}
+struct AANoSyncFunction final : public AANoSyncImpl {
+ AANoSyncFunction(const IRPosition &IRP) : AANoSyncImpl(IRP) {}
+
+ /// See AbstractAttribute::trackStatistics()
+ void trackStatistics() const override { STATS_DECLTRACK_FN_ATTR(nosync) }
+};
+
+/// NoSync attribute deduction for a call sites.
+using AANoSyncCallSite = AANoSyncFunction;
+
/// ------------------------ No-Free Attributes ----------------------------
struct AANoFreeImpl : public AANoFree {
void trackStatistics() const override { STATS_DECLTRACK_FN_ATTR(nofree) }
};
+/// NoFree attribute deduction for a call sites.
+using AANoFreeCallSite = AANoFreeFunction;
+
/// ------------------------ NonNull Argument Attribute ------------------------
struct AANonNullImpl : AANonNull {
AANonNullImpl(const IRPosition &IRP) : AANonNull(IRP) {}
void trackStatistics() const override { STATS_DECLTRACK_CSARG_ATTR(nonnull) }
};
+/// NonNull attribute deduction for a call sites.
+using AANonNullCallSiteReturned = AANonNullReturned;
+
/// ------------------------ Will-Return Attributes ----------------------------
// Helper function that checks whether a function has any cycle.
void trackStatistics() const override { STATS_DECLTRACK_FN_ATTR(norecurse) }
};
+/// WillReturn attribute deduction for a call sites.
+using AAWillReturnCallSite = AAWillReturnFunction;
+
/// ------------------------ NoAlias Argument Attribute ------------------------
struct AANoAliasImpl : AANoAlias {
void trackStatistics() const override { STATS_DECLTRACK_FNRET_ATTR(noalias) }
};
+/// NoAlias attribute deduction for a call site return value.
+using AANoAliasCallSiteReturned = AANoAliasReturned;
+
/// -------------------AAIsDead Function Attribute-----------------------
struct AAIsDeadImpl : public AAIsDead {
return Status;
}
+/// Liveness information for a call sites.
+using AAIsDeadCallSite = AAIsDeadFunction;
+
/// -------------------- Dereferenceable Argument Attribute --------------------
struct DerefState : AbstractState {
: ChangeStatus::CHANGED;
}
+/// Dereferenceable attribute deduction for a call site return value.
+using AADereferenceableCallSiteReturned = AADereferenceableReturned;
+
// ------------------------ Align Argument Attribute ------------------------
struct AAAlignImpl : AAAlign {
: ChangeStatus::CHANGED;
}
+/// Align attribute deduction for a call site return value.
+using AAAlignCallSiteReturned = AAAlignReturned;
+
/// ------------------ Function No-Return Attribute ----------------------------
struct AANoReturnImpl : public AANoReturn {
AANoReturnImpl(const IRPosition &IRP) : AANoReturn(IRP) {}
void trackStatistics() const override { STATS_DECLTRACK_FN_ATTR(noreturn) }
};
+/// NoReturn attribute deduction for a call sites.
+using AANoReturnCallSite = AANoReturnFunction;
+
/// ----------------------------------------------------------------------------
/// Attributor
/// ----------------------------------------------------------------------------