[AST/Parser] Convert TypeLoc struct into aligned class

This commit is contained in:
Pavel Yaskevich
2020-04-27 23:06:44 -07:00
parent 99ef865aac
commit 0b4404b51e
9 changed files with 13 additions and 9 deletions

View File

@@ -30,7 +30,7 @@ namespace swift {
class Stmt;
class Decl;
class Pattern;
struct TypeLoc;
class TypeLoc;
class DeclContext;
class SourceLoc;
class SourceRange;

View File

@@ -30,7 +30,7 @@ namespace swift {
class TypeDecl;
class EnumElementDecl;
class Type;
struct TypeLoc;
class TypeLoc;
class Pattern;
class ExtensionDecl;
class NominalTypeDecl;

View File

@@ -25,7 +25,7 @@ class ModuleDecl;
class Stmt;
class Pattern;
class TypeRepr;
struct TypeLoc;
class TypeLoc;
class ParameterList;
enum class AccessKind: unsigned char;

View File

@@ -51,6 +51,7 @@ namespace swift {
class TypeVariableType;
class TypeBase;
class TypeDecl;
class TypeLoc;
class ValueDecl;
/// We frequently use three tag bits on all of these types.
@@ -63,6 +64,7 @@ namespace swift {
constexpr size_t PatternAlignInBits = 3;
constexpr size_t SILFunctionAlignInBits = 2;
constexpr size_t TypeVariableAlignInBits = 4;
constexpr size_t TypeLocAlignInBits = 3;
}
namespace llvm {
@@ -124,6 +126,8 @@ LLVM_DECLARE_TYPE_ALIGNMENT(swift::SILFunction,
LLVM_DECLARE_TYPE_ALIGNMENT(swift::AttributeBase, swift::AttrAlignInBits)
LLVM_DECLARE_TYPE_ALIGNMENT(swift::TypeLoc, swift::TypeLocAlignInBits)
static_assert(alignof(void*) >= 2, "pointer alignment is too small");
#endif

View File

@@ -48,7 +48,7 @@ class RequirementRepr;
class SpecializeAttr;
class TrailingWhereClause;
class TypeAliasDecl;
struct TypeLoc;
class TypeLoc;
class Witness;
struct TypeWitnessAndDecl;
class ValueDecl;

View File

@@ -19,6 +19,7 @@
#include "swift/Basic/SourceLoc.h"
#include "swift/AST/Type.h"
#include "swift/AST/TypeAlignments.h"
#include "llvm/ADT/PointerIntPair.h"
namespace swift {
@@ -28,8 +29,7 @@ class TypeRepr;
/// TypeLoc - Provides source location information for a parsed type.
/// A TypeLoc is stored in AST nodes which use an explicitly written type.
struct TypeLoc {
private:
class alignas(1 << TypeLocAlignInBits) TypeLoc {
Type Ty;
TypeRepr *TyR = nullptr;

View File

@@ -54,7 +54,7 @@ namespace swift {
class ScopeInfo;
class SourceManager;
class TupleType;
struct TypeLoc;
class TypeLoc;
struct EnumElementInfo;

View File

@@ -67,7 +67,7 @@ namespace swift {
class Token;
class TopLevelContext;
class TypeCheckerOptions;
struct TypeLoc;
class TypeLoc;
class UnifiedStatsReporter;
namespace Lowering {

View File

@@ -35,7 +35,7 @@
namespace swift {
class Expr;
struct TypeLoc;
class TypeLoc;
class VarDecl;
class Pattern;
class SourceManager;