The Swift compilation process and swiftc
The compilation of the Swift source code is quite an interesting process, and it involves several steps. The Swift compiler uses LLVM for optimization and binary generation. To better understand the entire process, refer to this flow diagram:
First, the Swift source code is transformed into an AST (short for Abstract Syntax Tree). Then, it is transformed into SIL (short for Swift Intermediate Language), first into a raw SIL and then into a canonical SIL. After that, it is transformed into LLVM IR (short for Intermediate Representation). In this step, LLVM takes care of the rest. It takes IR, does an optimization, and produces an assembly and, after that, an executable for a specific architecture.
The interesting part in preceding diagram is the steps for generating SIL. It's a Swift-specific optimization and it was created specifically for swift. Other programming languages, such as C, don't do this optimization before they generate LLVM IR, and...