Split the SIL function convention and memory access documentation into separate documents. Reference them from SIL.rst.
1.4 KiB
SIL Programmers' Manual
This document provides information for developers working on the implementation of SIL. The formal specification of the Swift Intermediate Language is in SIL.rst. This is a guide to the internal implementation. Source comments normally provide this level of information as much as possible. However, some features of the implementation are spread out across the source base. This documentation is meant to offer a central point for approaching the source base with links to the code for more detailed comments.
SILType
TBD: Define the different levels of types. Explain type lowering with examples.
SILInstructionResults
TBD: Explain how the various types fit together with pointers to the source: SILValue, SILInstruction, SingleValueInstruction, MultipleValueInstructionResult. And why it was done this way.
SILGen
TBD: Possibly link to a separate document explaining the architecture of SILGen.
Some information from SIL.rst could be moved here.
IRGen
TBD: Possibly link to a separate document explaining the architecture of IRGen.
SILAnalysis and the PassManager
TBD: describe the mechanism by which passes invalidate and update the PassManager and its available analyses.
High Level SIL Optimizations
HighLevelSILOptimizations.rst discusses how the optimizer imbues certain special SIL types and SIL functions with higher level semantics.