Skip to content

Commit 0b4404b

Browse files
committed
[AST/Parser] Convert TypeLoc struct into aligned class
1 parent 99ef865 commit 0b4404b

File tree

9 files changed

+13
-9
lines changed

9 files changed

+13
-9
lines changed

include/swift/AST/ASTNode.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ namespace swift {
3030
class Stmt;
3131
class Decl;
3232
class Pattern;
33-
struct TypeLoc;
33+
class TypeLoc;
3434
class DeclContext;
3535
class SourceLoc;
3636
class SourceRange;

include/swift/AST/ASTPrinter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ namespace swift {
3030
class TypeDecl;
3131
class EnumElementDecl;
3232
class Type;
33-
struct TypeLoc;
33+
class TypeLoc;
3434
class Pattern;
3535
class ExtensionDecl;
3636
class NominalTypeDecl;

include/swift/AST/ASTWalker.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class ModuleDecl;
2525
class Stmt;
2626
class Pattern;
2727
class TypeRepr;
28-
struct TypeLoc;
28+
class TypeLoc;
2929
class ParameterList;
3030
enum class AccessKind: unsigned char;
3131

include/swift/AST/TypeAlignments.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ namespace swift {
5151
class TypeVariableType;
5252
class TypeBase;
5353
class TypeDecl;
54+
class TypeLoc;
5455
class ValueDecl;
5556

5657
/// We frequently use three tag bits on all of these types.
@@ -63,6 +64,7 @@ namespace swift {
6364
constexpr size_t PatternAlignInBits = 3;
6465
constexpr size_t SILFunctionAlignInBits = 2;
6566
constexpr size_t TypeVariableAlignInBits = 4;
67+
constexpr size_t TypeLocAlignInBits = 3;
6668
}
6769

6870
namespace llvm {
@@ -124,6 +126,8 @@ LLVM_DECLARE_TYPE_ALIGNMENT(swift::SILFunction,
124126

125127
LLVM_DECLARE_TYPE_ALIGNMENT(swift::AttributeBase, swift::AttrAlignInBits)
126128

129+
LLVM_DECLARE_TYPE_ALIGNMENT(swift::TypeLoc, swift::TypeLocAlignInBits)
130+
127131
static_assert(alignof(void*) >= 2, "pointer alignment is too small");
128132

129133
#endif

include/swift/AST/TypeCheckRequests.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class RequirementRepr;
4848
class SpecializeAttr;
4949
class TrailingWhereClause;
5050
class TypeAliasDecl;
51-
struct TypeLoc;
51+
class TypeLoc;
5252
class Witness;
5353
struct TypeWitnessAndDecl;
5454
class ValueDecl;

include/swift/AST/TypeLoc.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
#include "swift/Basic/SourceLoc.h"
2121
#include "swift/AST/Type.h"
22+
#include "swift/AST/TypeAlignments.h"
2223
#include "llvm/ADT/PointerIntPair.h"
2324

2425
namespace swift {
@@ -28,8 +29,7 @@ class TypeRepr;
2829

2930
/// TypeLoc - Provides source location information for a parsed type.
3031
/// A TypeLoc is stored in AST nodes which use an explicitly written type.
31-
struct TypeLoc {
32-
private:
32+
class alignas(1 << TypeLocAlignInBits) TypeLoc {
3333
Type Ty;
3434
TypeRepr *TyR = nullptr;
3535

include/swift/Parse/Parser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ namespace swift {
5454
class ScopeInfo;
5555
class SourceManager;
5656
class TupleType;
57-
struct TypeLoc;
57+
class TypeLoc;
5858

5959
struct EnumElementInfo;
6060

include/swift/Subsystems.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ namespace swift {
6767
class Token;
6868
class TopLevelContext;
6969
class TypeCheckerOptions;
70-
struct TypeLoc;
70+
class TypeLoc;
7171
class UnifiedStatsReporter;
7272

7373
namespace Lowering {

lib/Sema/ConstraintLocator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
namespace swift {
3636

3737
class Expr;
38-
struct TypeLoc;
38+
class TypeLoc;
3939
class VarDecl;
4040
class Pattern;
4141
class SourceManager;

0 commit comments

Comments
 (0)