diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2018-08-31 12:48:54 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2018-09-11 12:02:57 -0400 |
| commit | b8abcaa6583a87da2e245ff6921a8e34d4caa290 (patch) | |
| tree | c451a5e87d02c0b5152ed16818dd7e8e1eab3ef1 /src/doc/rustc-dev-guide | |
| parent | 038232d8afd03e1208639af1808aa4948ad6d1fc (diff) | |
| download | rust-b8abcaa6583a87da2e245ff6921a8e34d4caa290.tar.gz rust-b8abcaa6583a87da2e245ff6921a8e34d4caa290.zip | |
note about why stage1/stage2 are different
Diffstat (limited to 'src/doc/rustc-dev-guide')
| -rw-r--r-- | src/doc/rustc-dev-guide/src/how-to-build-and-run.md | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/doc/rustc-dev-guide/src/how-to-build-and-run.md b/src/doc/rustc-dev-guide/src/how-to-build-and-run.md index 59c31491e1e..f6c26ddf197 100644 --- a/src/doc/rustc-dev-guide/src/how-to-build-and-run.md +++ b/src/doc/rustc-dev-guide/src/how-to-build-and-run.md @@ -62,6 +62,15 @@ internally. The result is the compiling `rustc` is done in stages: compiled with the stage0 compiler to produce the stage1 compiler. However, it was built with an older compiler (stage0), so to optimize the stage1 compiler we go to next stage. + - (In theory, the stage1 compiler is functionally identical to the + stage2 compiler, but in practice there are subtle differences. In + particular, the stage1 compiler itself was built by stage0 and + hence not by the source in your working directory: this means that + the symbol names used in the compiler source may not match the + symbol names that would have been made by the stage1 compiler. + This can be important when using dynamic linking (e.g., with + derives. Sometimes this means that some tests don't work when run + with stage1.) - **Stage 2:** we rebuild our stage1 compiler with itself to produce the stage2 compiler (i.e. it builds itself) to have all the _latest optimizations_. |
