mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Fold "AbstractCC" into SILFunctionType::Representation.
These aren't really orthogonal concerns--you'll never have a @thick @cc(objc_method), or an @objc_block @cc(witness_method)--and we have gross decision trees all over the codebase that try to hopscotch between the subset of combinations that make sense. Stop the madness by eliminating AbstractCC and folding its states into SILFunctionTypeRepresentation. This cleans up a ton of code across the compiler. I couldn't quite eliminate AbstractCC's information from AST function types, since SIL type lowering transiently created AnyFunctionTypes with AbstractCCs set, even though these never occur at the source level. To accommodate type lowering, allow AnyFunctionType::ExtInfo to carry a SILFunctionTypeRepresentation, and arrange for the overlapping representations to share raw values. In order to avoid disturbing test output, AST and SILFunctionTypes are still printed and parsed using the existing @thin/@thick/@objc_block and @cc() attributes, which is kind of gross, but lets me stage in the real source-breaking change separately. Swift SVN r27095
This commit is contained in:
@@ -244,14 +244,14 @@ public:
|
||||
bool isZombie() const { return Zombie; }
|
||||
|
||||
/// Returns the calling convention used by this entry point.
|
||||
AbstractCC getAbstractCC() const {
|
||||
return getLoweredFunctionType()->getAbstractCC();
|
||||
SILFunctionTypeRepresentation getRepresentation() const {
|
||||
return getLoweredFunctionType()->getRepresentation();
|
||||
}
|
||||
|
||||
/// Returns true if this function has a calling convention that has a self
|
||||
/// argument.
|
||||
bool hasSelfArgument() const {
|
||||
return getLoweredFunctionType()->hasSelfArgument();
|
||||
bool hasSelfParam() const {
|
||||
return getLoweredFunctionType()->hasSelfParam();
|
||||
}
|
||||
|
||||
StringRef getName() const { return Name; }
|
||||
|
||||
Reference in New Issue
Block a user