[AutoDiff] Fix "'alignof' to an incomplete type" error in AutoDiff.h. (#29983)

Using `DenseMap<SILAutoDiffDerivativeFunctionKey, ...>` in a file that includes
AutoDiff.h but not Types.h produced the following error:
```
error: invalid application of 'alignof' to an incomplete type 'swift::SILFunctionType'
```

Fix the error by:
- Including TypeAlignments.h in AutoDiff.h.
- Adding an alignment forward declaration for `SILFunctionType` to TypeAlignments.h.
This commit is contained in:
Dan Zheng
2020-02-20 22:31:09 -08:00
committed by GitHub
parent 9013bbbe4a
commit d7ab0c1547
2 changed files with 4 additions and 0 deletions

View File

@@ -23,6 +23,7 @@
#include "swift/AST/Identifier.h"
#include "swift/AST/IndexSubset.h"
#include "swift/AST/Type.h"
#include "swift/AST/TypeAlignments.h"
#include "swift/Basic/Range.h"
#include "swift/Basic/SourceLoc.h"

View File

@@ -46,6 +46,7 @@ namespace swift {
class ProtocolDecl;
class ProtocolConformance;
class SILFunction;
class SILFunctionType;
class Stmt;
class TypeVariableType;
class TypeBase;
@@ -100,6 +101,8 @@ LLVM_DECLARE_TYPE_ALIGNMENT(swift::ExtensionDecl, swift::DeclAlignInBits)
LLVM_DECLARE_TYPE_ALIGNMENT(swift::TypeBase, swift::TypeAlignInBits)
LLVM_DECLARE_TYPE_ALIGNMENT(swift::ArchetypeType, swift::TypeAlignInBits)
LLVM_DECLARE_TYPE_ALIGNMENT(swift::TypeVariableType, swift::TypeVariableAlignInBits)
LLVM_DECLARE_TYPE_ALIGNMENT(swift::SILFunctionType,
swift::TypeVariableAlignInBits)
LLVM_DECLARE_TYPE_ALIGNMENT(swift::Stmt, swift::StmtAlignInBits)
LLVM_DECLARE_TYPE_ALIGNMENT(swift::BraceStmt, swift::StmtAlignInBits)