[SIL][PackageCMO] Allow optimizing [serialized_for_pkg] functions during SIL

inlining, generic/closure specialization, and devirtualization optimization passes.

SILFunction::canBeInlinedIntoCaller now exlicitly requires a caller's SerializedKind_t arg.
isAnySerialized() is added as a convenience function that checks if [serialized] or [serialized_for_pkg].

Resolves rdar://128704752
This commit is contained in:
Ellie Shin
2024-05-23 16:14:15 -07:00
parent 67e9df028e
commit 4ecfc96578
25 changed files with 123 additions and 178 deletions

View File

@@ -53,7 +53,10 @@ public:
AbstractStorageDecl *Decl,
std::optional<KeyPathPatternComponent> Component);
bool isNotSerialized() const { return SerializedKind_t(Serialized) == IsNotSerialized; }
bool isAnySerialized() const {
return SerializedKind_t(Serialized) == IsSerialized ||
SerializedKind_t(Serialized) == IsSerializedForPackage;
}
SerializedKind_t getSerializedKind() const {
return SerializedKind_t(Serialized);
}