From 01d6ec9bc3123e5f1402d999e51b1b141188679a Mon Sep 17 00:00:00 2001 From: Per <Per Lindgren> Date: Sun, 5 Nov 2017 19:38:05 +0100 Subject: [PATCH] fix --- doc/Memory.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/doc/Memory.md b/doc/Memory.md index 6d3c452..ed503e2 100644 --- a/doc/Memory.md +++ b/doc/Memory.md @@ -85,30 +85,24 @@ Thus, only for cases when *true* random access is desired/required, raw indexing In short, the complilation process can be broken down to the following steps: 1. Parsing input - - * this processes the .rs files and produces the AST ("abstract syntax tree") + * this processes the .rs files and produces the AST ("abstract syntax tree") * the AST is defined in syntax/ast.rs. It is intended to match the lexical syntax of the Rust language quite closely. 2. Name resolution, macro expansion, and configuration - * once parsing is complete, we process the AST recursively, resolving paths and expanding macros. This same process also processes `#[cfg]` nodes, and hence may strip thingsout of the AST as well. 3. Lowering to HIR * Once name resolution completes, we convert the AST into the HIR, or "high-level IR". * The HIR is a lightly desugared variant of the AST. It is more processed than the AST and more suitable for the analyses that follow. 4. Type-checking and subsequent analyses - * An important step in processing the HIR is to perform type checking. This process assigns types to every HIR expression, and also is responsible for resolving some "type-dependent" paths, such as field accesses (`x.f`) 5. Lowering to MIR and post-processing - * Once type-checking is done, we can lower the HIR into MIR ("middle IR"), which is a very desugared version of Rust. Here is where the borrow checking is done!!!! 6. Translation to LLVM and LLVM optimizations - * From MIR, we can produce LLVM IR. LLVM then runs its various optimizations, which produces a number of .o files (one for each "codegen unit"). 7. Linking - Finally, those .o files are linked together. ### LLVM -- GitLab